Partial Evaluation, Whole-Program Compilation
summary
A tool called Weevil partial evaluator unrolls an SSA interpreter, uses context-sensitive constant propagation and memoized block copies to produce whole-function compilers that preserve the bytecode control-flow graph, requiring only small interpreter annotations. Applied to SpiderMonkey inside WebAssembly via snapshotting it yields 2.17× speedup over the interpreter-with-ICs (and 1.84× on PUC‑Rio Lua), produces extra code that can be memory‑mapped, and enables ahead-of-time compilation without a JIT.
AI-written summary · about
chapters (8)
- 0:00Introduction
- 2:28JIT challenges on WebAssembly
- 4:11Futamura projection prior work
- 8:24Context sensitivity in Weevil
- 11:54Weevil’s algorithm
- 12:58AOT in SpiderMonkey
- 14:43Benchmark results
- 15:48Q&A
related talks
09mCompilers for nothing, executables for free!
29mA Fast In-Place Interpreter for WebAssembly
26mJavaScript JITs
19mKeynote: Making JavaScript on WebAssembly Fast
01h 06mWhy are partial evaluation and supercompilation still not widely used in practic
01h 01mA partial history of partial evaluation
47mHow an Optimizing Compiler Works
35mWebAssembly: now web is a new compiler target architecture
