Optimization-Aware Compiler-Level Event Profiling
summary
Instrumentation lives inside Graal and delays insertion until after the last phase that can remove the event, using lightweight markers instead of side-effecting code and replacing them at the end with one of three strategies (direct, path decoding, P-counting). The implementation profiles 43 compiler- and bytecode-level event types, modifies standard path-profiling for JIT use, explains a 15% Renaissance speedup by enabling more vectorized loops, and reports average overheads: 1.8× execution time, 1.48× compile time, 1.49× code size.
AI-written summary · about
chapters (8)
- 0:00Introduction
- 3:00JIT compilers and IR
- 4:50Four-step profiling
- 10:32Use cases for optimizations
- 11:36Case study: Aliasing impact
- 13:45Profiling overhead results
- 15:10Summary
- 16:11Q&A
related talks
21mDiagnosing Compiler Performance by Comparing Optimization Decisions
06mProfile-Guided Optimization in the Go Compiler
26mAn Analysis of Compiled Code Reusability in Dynamic Compilation
30mOn Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
47mHow an Optimizing Compiler Works
40mJoy of Meta-Tracing Just-in-Time Compilation: More Than Just a VM Generator
52mUnderstanding Compiler Optimization
27mImproving Vectorization Heuristics in a Dynamic Compiler with Machine Learning Models
