Deegen: A JIT-Capable VM Generator for Dynamic Languages
Haoran Xu, Fredrik Kjolstad

TL;DR
Deegen is a meta-compiler that simplifies the creation of high-performance JIT-capable VMs for dynamic languages, automating complex optimizations and outperforming existing state-of-the-art interpreters and JITs.
Contribution
It introduces the first automatic generation of a JIT compiler and an interpreter that surpasses current state-of-the-art implementations, reducing engineering effort significantly.
Findings
LJR's interpreter is 179% faster than PUC Lua interpreter
LJR's baseline JIT is 360% faster than PUC Lua
Generated code rivals expert-crafted assembly
Abstract
Building a high-performance JIT-capable VM for a dynamic language has traditionally required a tremendous amount of time, money, and expertise. We present Deegen, a meta-compiler that allows users to generate a high-performance JIT-capable VM for their own language at an engineering cost similar to writing a simple interpreter. Deegen takes in the execution semantics of the bytecodes implemented as C++ functions, and automatically generates a two-tier VM execution engine with a state-of-the-art interpreter, a state-of-the-art baseline JIT, and the tier-switching logic that connects them into a self-adaptive system. We are the first to demonstrate the automatic generation of a JIT compiler, and the automatic generation of an interpreter that outperforms the state of the art. Our performance comes from a long list of optimizations supported by Deegen, including bytecode specialization…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsModel-Driven Software Engineering Techniques · Parallel Computing and Optimization Techniques · Advanced Data Storage Technologies
