How (Not) To Write Java Pointer Analyses After 2020
summary
This research exposes concrete pitfalls and fixes for Java pointer analyses: handling 14 language cases (nulls, exceptions, hidden this, returns, globals) instead of the taught four; applying value context and then pruning each context to the actually relevant subgraph; specializing contexts for a client (escape analysis) and staging analyses via partial evaluation. Prototypes integrate into HotSpot C2 and OpenJ9, turning jobs that needed 512 GB and hours into runs on ~32 GB taking minutes on DaCapo-style benchmarks.
AI-written summary · about
chapters (10)
- 0:00Start
- 0:41Pointer Analysis: An Evergreen Problem
- 1:34My Journey with Pointer Analysis
- 6:40More "starter tips" in the paper!
- 8:05Precision in Java Pointer Analysis
- 8:55Call-strings based context sensitivity
- 10:23Value Contexts
- 17:31Correctness in Java Pointer Analysis
- 18:40Staging analyses across static and JIT compilers
- 21:42Summary
related talks
16mHow (Not) to Write Java Pointer Analyses after 2020
56mHotSpot Internals: Safepoints, NullPointers and StackOverflows
42mAn Opinionated Overview on Static Analysis for Java
55mThe Performance Engineer's Guide To Java HotSpot
15mMaking Pointer Analysis More Precise by Unleashing the Power of Selective Context Sensitivity
54mJava performance techniques The cost of HotSpot runtime optimizations
01h 00mon Java - Historical Oddities & Persistent Itches
19mPointer Analysis for Database-Backed Applications
