Inlining-Benefit Prediction with Interprocedural Partial Escape Analysis
summary
Implements an Interprocedural Partial Escape Analysis (IPEA) inside a cost-based inliner for GraalVM Native Image, injecting a virtual object state across call boundaries, re-running intraprocedural PEA, and using branch profile weights to compute a materialization frequency that quantifies expected allocation reductions. Evaluated on Dacapo/ScalaBench/Renaissance, it yields a geometric mean speedup of 1.79%, six benchmarks >5% (geomean 9.10%, max 24.62%), and often reduces code size and compile time versus aggressive inlining.
AI-written summary · about
chapters (16)
- 0:00Start
- 0:05Eliminating object allocations
- 1:35Can we achieve this with Partial Escape Analysis?
- 3:41Where does this break down?
- 4:30Existing approaches ignore control-flow-sensitivity
- 7:12Scalap suffers from code bloat
- 7:43Research question
- 8:02Key insights & contributions
- 9:03Generic Cost-Benefit based inlining
- 10:00Computing Materializations
- 11:14Computing Materialization Frequencies
- 11:45Inlining System Overview - GraalVM Native Image
- 13:02Runtime Improvements (Lower is better)
- 13:53Heuristic Tuning
- 14:43Dynamic allocations
- 16:22Conclusion
related talks
26mAn Analysis of Compiled Code Reusability in Dynamic Compilation
30mOn Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
19mOptimization-Aware Compiler-Level Event Profiling
46mCompiling Scala Faster with GraalVM
21mDiagnosing Compiler Performance by Comparing Optimization Decisions
17mRecent Developments in Optimizing Compilers for RISC-V
20mPartial Evaluation, Whole-Program Compilation
35mInlining: bright victories and hidden defeats
