On Automating Hybrid Execution of Ahead-of-Time and Just-in-Time Compiled Code
summary
Hybrid per-function execution blends AOT native and JIT managed code by profiling a run to build a call graph, emitting a specification file, and then switching modes on subsequent runs; decisions use a call-graph based decision that first rejects functions accessing managed data, then marks large functions (heuristic: 30KB LLVM threshold with loop-nesting ×10) as native and applies a simple up/down-call cost formula to avoid frequent upcalls. Implemented in GraalVM implementation, it yields measured speedups like 1.48× data setup, 2.6× warm-up, 3.5× peak.
AI-written summary · about
chapters (15)
- 0:00Introduction
- 1:25Combining AOT and JIT
- 2:29Hybrid model in GraalVM
- 3:56Automating execution mode
- 4:59Heuristics for execution
- 8:32Static function size
- 12:01Call overhead and switching
- 14:29Heuristic example
- 15:54Benchmark results
- 19:53Future improvements
- 20:56Summary
- 21:23Q&A: AOT validity and profiling
- 23:51Q&A: AOT for C and mixed
- 25:37Q&A: Call graph depth
- 27:25Q&A: Heuristic parameters
related talks
25mHybrid Execution: Combining Ahead-of-Time and Just-in-Time Compilation
33mNew Opportunities for Developers with GraalVM
23mFast and Compact: Reducing Size of AOT-Compiled Java Code Without Sacrificing Performance
46mAhead Of Time (AOT) Internals
43mThe Virtual Machine Under the Hood
29mGraalVM in a Nutshell
55mJIT and AOT in the JVM
38mGraal
