Automatically Generated Supernodes for AST Interpreters Improve Virtual-machine P...
summary
Generates ahead-of-time generated AST supernodes for GraalVM JavaScript (GraalJS/Truffle), creates a prefix lookup trie of supernode structures, and installs matching compound node instances at load time to replace control-flow subtrees. Results show interpreter speedups up to 1.55x and 1.24x on average, steady-state 1.14x average, and JIT compilation speedup 1.33x average (compilation speedups up to 2.86x, two slowdowns). Technique reduces polymorphic call sites and exception-based control flow at the cost of increased VM startup time and larger interpreter binaries.
AI-written summary · about
chapters (24)
- 0:00Introduction
- 0:23AST interpreter performance
- 1:47Supernodes technique overview
- 2:30AST interpreters background
- 4:17GraalVM JavaScript implementation
- 5:21Fibonacci motivating example
- 7:55Supernode generation details
- 8:56Lookup tree generation
- 10:41Supernode structure and IDs
- 11:26Lookup tree algorithm
- 13:56Supernode installation at runtime
- 15:22Evaluation setup
- 16:03Interpreter performance results
- 16:49JIT compilation impact
- 17:32Compilation time analysis
- 18:16Limitations and future work
- 18:59Conclusion
- 20:03Q&A
- 20:24Top-down supernode reasoning
- 21:53Supernodes across benchmarks
- 23:17Extending to other platforms
- 24:41Adapting to VM models
- 26:28Non-control flow challenges
- 28:13Type specialization in supernodes
related talks
28mTruffle
17mAST vs. Bytecode: Interpreters in the Age of Meta-Compilation
31mThe AST Galaxy to the Virtual Machine Blues
37mGraalVM for Polyglots: Harder, Better, Faster, Stronger?
27mASTro: An AST-based Reusable Optimization Framework
40mJoy of Meta-Tracing Just-in-Time Compilation: More Than Just a VM Generator
59mSupercompilation, Partial Evaluation, Futamura Projections and How GraalVM Will Save the World
46mDr. Futamura and the Projection Machine: From Interpreters to Compilers
