REVIEW 3 major objections 4 minor 47 references
Deegen: A JIT-Capable VM Generator for Dynamic Languages
T0 review · 3 major / 4 minor · reviewed 2026-08-12 · deepseek-v4-flash
Pith's one-line read Deegen claims that a two-tier VM with a state-of-the-art interpreter and baseline JIT can be generated automatically from C++ bytecode semantics, and backs the claim with a Lua 5.1 implementation that beats the PUC Lua interpreter by 179%.
desk verdict First static generation of a competitive interpreter and baseline JIT from bytecode semantics, with strong empirical evidence; the omitted correctness argument for type-check elimination is the main gap, and it is testable. read the letter →
The pith
A machine-rendered reading of the paper's core claim, the machinery that carries it, and where it could break.
The reading
What carries the argument
The load-bearing mechanism is the bytecode semantic description framework. Users specify operands, result types, variants, speculative type hints, and slow paths through Deegen APIs, while the execution semantics themselves are ordinary C++ functions compiled to LLVM IR. Algorithm A, the core of the type-based optimization, runs sparse conditional constant propagation once per combination of guessed operand types, recording which type checks are trivially true, trivially false, or reducible by user-supplied strength-reduction rules; this turns type speculation into automatic fast-path and slow-path splitting. Generic inline caching is expressed as an idempotent computation $\lambda_i$ mapping an IC key to an IC state, followed by a cheap effect $\lambda_e(\text{Input}, \text{state})$; Deegen desugars these lambdas into tier-specific code, monomorphic with quickening in the interpreter and polymorphic self-modifying stubs in the JIT. Baseline JIT code generation is Copy-and-Patch: bytecode contents and IC state are burnt in as constants, and a CallBr (asm-goto) IR trick lets Deegen extract main-logic and IC-stub stencils from ordinary LLVM-generated assembly, including the inline-slab self-modifying stub chain.
What would settle it
Take LJR's Add bytecode, which splits on a speculation that both operands are tDoubleNotNaN, and execute it with one operand a NaN boxed as an impure NaN or a table; if the generated fast path produces a result different from PUC Lua's rather than transferring to the slow path, Algorithm A or the user-supplied type description is unsound. A systematic version is to mutate one strength-reduction rule in the type-hierarchy description and rerun the 44-benchmark suite against PUC Lua, since any divergence in outputs would falsify the automatic-optimization claim independently of the speed numbers.
Extended reading notes
Core claim
On the paper's own terms, the discovery is that the two hardest components of a dynamic-language VM---a state-of-the-art interpreter and a baseline JIT---can be produced automatically rather than written by assembly experts, and that this generation can happen without surrendering either startup speed or steady-state throughput. Deegen compiles the C++ bytecode semantics to LLVM IR, runs domain-specific passes for type-check removal, strength reduction, inline-cache lowering, hot-cold splitting, and stencil extraction, and emits a self-contained runtime that uses Copy-and-Patch to generate machine code on demand. The resulting VM, LuaJIT Remake, is a standard-compliant Lua 5.1 implementation whose interpreter outperforms PUC Lua by 179% and LuaJIT's interpreter by 31%, and whose baseline JIT compiles 19.1 million bytecodes per second while running 360% faster than PUC Lua and 33% slower than LuaJIT's optimizing JIT, and faster on 13 of 44 benchmarks.
Load-bearing premise
The load-bearing premise is that the automatically produced type-specialized fast paths are semantically correct whenever the user's type hierarchy and strength-reduction rules are correct, but the paper omits the correctness proof with "We omit an argument of correctness due to space," so a silent miscompile in Algorithm A would invalidate the generated VM while leaving all speed measurements intact.
Editorial extensions
If this is right
- A language implementer can obtain both an interpreter and a baseline JIT by writing only bytecode semantics; the tier-up and OSR-entry glue is emitted automatically.
- Variant-based specialization means engineering cost scales with semantic definitions rather than with the number of optimized bytecode forms: 42 definitions produce 255 specialized variants.
- Because the baseline JIT compiles at gigabytes per second, the interpreter-to-JIT transition can be hotness-driven without observable startup pauses on short-running workloads.
- If the described third-tier optimizing JIT is built, the design predicts that the remaining peak-throughput gap to optimizing JITs will be closable without changing the user-facing bytecode description.
- Since both tiers come from one source of truth, language-semantics changes propagate consistently to the interpreter and the JIT instead of requiring synchronized hand edits.
Reading between the lines
- Beyond what the paper claims, the architecture suggests that the build-time/runtime split is the real enabler: expensive analyses such as SCCP over type combinations and assembly CFG inspection run once per bytecode definition, not once per user program, which is what makes automatic JIT generation practical.
- The same Copy-and-Patch and CallBr machinery could plausibly be reused outside VMs---for DSL runtimes, tree-walking evaluators, or event-driven frameworks---where one semantic description should yield both a fast interpreter and a quick JIT.
- A testable extension is to vary the user-supplied type hierarchy and strength-reduction rules, for example adding a small-integer fast path or a tagged-pointer type, and check whether the generated interpreter and JIT track hand-written design expectations; the paper's claim predicts Deegen will exploit any rule expressible in its API.
- An implicit production risk the paper does not resolve is that mis-specified IC annotations, such as wrong impossible-key values or wrong range annotations, are documented as undefined behavior, so a production version would need a debug mode that validates these annotations at runtime.
Signed reviews
Editorial analysis
A structured set of objections, weighed in public.
Referee Report
Summary. The paper presents Deegen, a build-time meta-compiler that takes C++ descriptions of bytecode execution semantics and automatically generates a two-tier VM consisting of a register-pinned, continuation-passing interpreter and a Copy-and-Patch based baseline JIT, together with profiling, tier-up, and OSR-entry logic. The user writes bytecode semantics as C++ functions using Deegen APIs, and Deegen performs LLVM-IR-level transformations for type-based optimization, inline caching, tag-register optimization, and other dynamic-language optimizations. The paper validates the approach with LuaJIT Remake (LJR), a Lua 5.1 VM, reporting interpreter performance 179% faster than PUC Lua and 31% faster than LuaJIT's interpreter, and baseline JIT performance 360% faster than PUC Lua and 33% slower than LuaJIT's optimizing JIT, with JIT compilation throughput of 1.62 GiB/s.
Significance. If the claims are correct, Deegen is a substantial advance in VM construction: it offers a single source of truth for bytecode semantics and automatically produces an interpreter and a baseline JIT whose generated assembly is competitive with hand-written VM code. The paper provides concrete evidence in the form of real disassembly listings, 44 benchmarks, an open-source artifact, and direct performance measurements rather than fitted models. The main substantive gap is the absence of a correctness argument for the type-based optimization algorithm in Section 5.1, which is load-bearing for the central claim that Deegen automatically generates a correct VM.
major comments (3)
- [§5.1, Algorithm A] The paper states 'We omit an argument of correctness due to space' immediately after describing Algorithm A, which replaces type-checker calls with true/false constants under SCCP and then splits code into fast and slow paths. This is a load-bearing omission: the generated VM's correctness depends on (i) each user-supplied type checker being a pure predicate over the operand's type with no side effects or hidden state, and (ii) the user-declared type hierarchy faithfully modeling the actual boxing scheme. Neither requirement is stated as an API contract or verified by the framework. A type checker that, for example, consults a hidden-class cache or an environment flag would change behavior when replaced by a constant, and a wrong type lattice could silently produce incorrect code on the fast path. The paper should either provide a formal soundness statement for Algorithm A under explicit assumptions about the type-checker API, or supply a differential fuzz test that compares executions of the optimized and unoptimized VM on a broad set of programs; without one of these, the 'automatically generated correct VM' claim is not supported.
- [§8, Evaluation] The evaluation measures performance but never verifies that LJR produces the same observable results as PUC Lua or LuaJIT on the 44 benchmarks. Since the paper claims LJR is 'standard-compliant' and uses that compliance to argue for Deegen's correctness, the absence of any output comparison or conformance testing is a gap. Even if Algorithm A were proven correct, the implementation could still have lowering bugs in the interpreter, JIT, or inline-cache machinery. Adding a differential test harness that runs the same benchmarks under LJR and PUC Lua and compares outputs would directly address this concern and is feasible within the manuscript's scope.
- [§5.1, type-checker API contract] Even setting aside the proof, the paper should specify the exact obligations of the user when defining type checkers and strength-reduction rules. The current text describes syntactic tuples ⟨S,c,d,e⟩ but does not state that c must be a pure function of the boxed value's type, nor that d/e must be inverses on the corresponding domain, nor that the type hierarchy must be a partition refinement of the concrete value representation. Without these contracts, the 'user-provided cost estimation' and rule selection in Algorithm A are not enough to guarantee that a chosen strength reduction preserves semantics. This is fixable by adding a short 'soundness requirements' subsection or a formal lemma.
minor comments (4)
- [§8.3] Performance numbers are reported as averages of three runs on a single machine with no error bars, variation, or per-run data; given the small run count, adding at least min/max or standard deviation would make the headline comparisons more robust.
- [§5.1, Algorithm A complexity] Algorithm A runs SCCP |T|^n times, where n is the number of bytecode operands; the paper notes this is acceptable at build time, but it would be useful to report the actual build-time cost for the 42 bytecode definitions in LJR, since this affects the 'engineering cost similar to a simple interpreter' claim.
- [§8.1, Figure 25] The lines-of-code comparison would be clearer if it stated whether the LJR LLOC count includes the user-written parser and standard-library stubs, since those are part of the total engineering effort of building a VM with Deegen.
- [§7.1, Figure 18] The disassembly figure for GetById is dense and the labels are small; a high-resolution version or an annotated walkthrough would help readers verify the claims about self-modifying code and inline slabs.
Circularity Check
No significant circularity: Deegen's claims rest on direct external measurements and a substantial, independently published Copy-and-Patch foundation.
full rationale
Deegen's central derivation—from C++ bytecode semantics to a generated interpreter and baseline JIT—is not circular. The headline performance claims are direct measurements of LJR against external baselines (PUC Lua and LuaJIT) on standard benchmark suites, with no fitted parameter or predicted quantity that reduces to an input. The type-based optimization pass in Section 5.1 does omit a correctness argument ('We omit an argument of correctness due to space'), but that is a soundness gap, not a circular step: the optimized function is not defined in terms of the claim it supports, and no result is renamed from its inputs. The self-citation of Copy-and-Patch [Xu and Kjolstad 2021] is a normal technique citation; Copy-and-Patch is independently published, and the present paper contributes a substantial extension (CallBr-based IC, stencil extraction, polymorphic IC, hot-cold splitting). No uniqueness theorem, ansatz, or fitted input is imported from the authors' prior work, and no 'prediction' in the paper is obtained by fitting or by definitional equivalence to its inputs.
Assumptions & free parameters
free parameters (2)
- Maximum number of locals in a function =
10^6
- Maximum SlowPathData stream length =
256 MB
assumptions (4)
- domain assumption Type-based optimization algorithm A is semantics-preserving under the stated type preconditions
- domain assumption User-provided boxing scheme and type hierarchy (checkers, encoders, decoders, strength reduction rules) are correct
- domain assumption The modified LLVM backend correctly dumps indirect branch targets as assembly comments, which are used to reconstruct the CFG for IC extraction
- standard math x86-64 small code model ABI range [1, 2^31 - 2^24) for external symbol addresses is honored by all runtime constant expressions patched into stencils
Cite this review
Pith. "Pith review of Deegen: A JIT-Capable VM Generator for Dynamic Languages." pith.science (2026). https://pith.science/paper/BTFN27FE
@misc{pith2026241111469,
author = {Pith},
title = {Pith review of: Deegen: A JIT-Capable VM Generator for Dynamic Languages},
year = {2026},
howpublished = {\url{https://pith.science/paper/BTFN27FE}},
note = {Machine review of arXiv:2411.11469}
}
read the original 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 and quickening, register pinning, tag register optimization, call inline caching, generic inline caching, JIT polymorphic IC, JIT IC inline slab, type-check removal and strength reduction, type-based slow-path extraction and outlining, JIT hot-cold code splitting, and JIT OSR-entry. These optimizations are either employed automatically, or guided by the language implementer through intuitive APIs. As a result, the disassembly of the Deegen-generated interpreter, baseline JIT, and the generated JIT code rivals the assembly code hand-written by experts in state-of-the-art VMs. We implement LuaJIT Remake (LJR), a standard-compliant Lua 5.1 VM, using Deegen. Across 44 benchmarks, LJR's interpreter is on average 179% faster than the official PUC Lua interpreter, and 31% faster than LuaJIT's interpreter. LJR's baseline JIT has negligible startup delay, and its execution performance is on average 360% faster than PUC Lua and only 33% slower (but faster on 13/44 benchmarks) than LuaJIT's optimizing JIT.
Figures
Figures from the paper (17 more)
Reference graph
Works this paper leans on
-
[1]
https://doi.org/10.14778/3151113.3151114 Mozilla
-
[3]
Association for Computing Machinery
Cinder: We didn’t start the fire (ICOOOLPS ’22). Association for Computing Machinery. https: //2022.ecoop.org/details/ICOOOLPS-2022-papers/5/Cinder-We-didn-t-start-the-fire Jeff Bezanson, Alan Edelman, Stefan Karpinski, and Viral B. Shah
work page 2022
-
[13]
Association for Computing Machinery
HPy: How To Design a C API For Optimizing Runtimes (ICOOOLPS ’22). Association for Computing Machinery. https://2022.ecoop.org/details/ICOOOLPS-2022-papers/6/HPy-How-To-Design-a-C-API-For-Optimizing- Runtimes 24 H. Xu and F. Kjolstad Yoshihiko Futamura
work page 2022
-
[17]
The 2022 Graal Workshop: Science, Art, Magic: Using and Developing The Graal Compiler (April 2022)
Operation DSL: How We Learned to Stop Worrying and Love Bytecodes again. The 2022 Graal Workshop: Science, Art, Magic: Using and Developing The Graal Compiler (April 2022). https://2022.ecoop. org/details/truffle-2022/3/Operation-DSL-How-We-Learned-to-Stop-Worrying-and-Love-Bytecodes-again Christian Humer, Christian Wimmer, Christian Wirth, Andreas Wöß, a...
work page 2022
-
[20]
Two-level Just-in-Time Compilation with One Interpreter and One Engine
Two-level Just-in-Time Compilation with One Interpreter and One Engine. arXiv:2201.09268 [cs.PL] Robert Gabriel Jakabosky and Dennis Schridde
-
[27]
The 2022 Graal Workshop: Science, Art, Magic: Using and Developing The Graal Compiler (April 2022)
Truffle Interpreter Performance without the Holy Graal. The 2022 Graal Workshop: Science, Art, Magic: Using and Developing The Graal Compiler (April 2022). https: //kar.kent.ac.uk/93938/1/Truffle_Interpreter_Performance_without_the_Holy_Graal.pdf The Truffle interpreter vs Node.js interpreter/CPython/CRuby performance comparison is on page
work page 2022
-
[30]
Proceedings of the VLDB Endowment 4, 9 (2011), 539–550
Efficiently compiling efficient query plans for modern hardware. Proceedings of the VLDB Endowment 4, 9 (2011), 539–550. K. V. Nori, Sanjeev Kumar, and M. Pavan Kumar
work page 2011
-
[31]
HHVM Jump-Start: Boosting Both Warmup and Steady-State Performance at Scale. In Proceedings of the 2021 IEEE/ACM International Symposium on Code Generation and Optimization (Virtual Event, Republic of Korea) (CGO ’21). IEEE Press, 340–350. https://doi.org/10.1109/CGO51591.2021.9370314 Matthew Weier O’Phinney
arXiv 2021
Show all 47 references
-
[33]
Suggestions on implementing an efficient instruction set simulator in LuaJIT2 . LuaJIT. http://lua-users.org/ lists/lua-l/2011-02/msg00742.html Mike Pall
2011
-
[36]
In Proceedings of the 11th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (Rome, Italy) (ICOOOLPS ’16)
Sulong - Execution of LLVM-Based Languages on the JVM: Position Paper. In Proceedings of the 11th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (Rome, Italy) (ICOOOLPS ’16). Association for Computing Machinery, New Yor...
-
[37]
In Proceedings of the Ninth International Conference on Generative Programming and Component Engineering (Eindhoven, The Netherlands) (GPCE ’10)
Lightweight Modular Staging: A Pragmatic Approach to Runtime Code Generation and Compiled DSLs. In Proceedings of the Ninth International Conference on Generative Programming and Component Engineering (Eindhoven, The Netherlands) (GPCE ’10). Association for Computing Machinery...
-
[42]
The Baseline Compiler Has Landed . Mozilla. https://hacks.mozilla.org/2010/03/improving-javascript- performance-with-jagermonkey/ Luke Wagner
2010
-
[44]
In Proceedings of the 26th International Conference on Compiler Construction (Austin, TX, USA) (CC 2017)
One Compiler: Deoptimization to Optimized Code. In Proceedings of the 26th International Conference on Compiler Construction (Austin, TX, USA) (CC 2017). Association for Computing Machinery, New York, NY, USA, 55–64. https://doi.org/10.1145/3033019.3033025 Thomas Würthinger, C...
2017
-
[45]
InProceedings of the 2013 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software (Indianapolis, Indiana, USA) (Onward! 2013)
One VM to Rule Them All. InProceedings of the 2013 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software (Indianapolis, Indiana, USA) (Onward! 2013). Association for Computing Machinery, New York, NY, USA, 187–204. https://doi.org/1...
2013
-
[46]
In Proceedings of the 8th Symposium on Dynamic Languages (Tucson, Arizona, USA) (DLS ’12)
Self- Optimizing AST Interpreters. In Proceedings of the 8th Symposium on Dynamic Languages (Tucson, Arizona, USA) (DLS ’12). Association for Computing Machinery, New York, NY, USA, 73–82. https://doi.org/10.1145/2384577.2384587 Haoran Xu and Fredrik Kjolstad
-
[47]
lhs") // An operand named
Copy-and-Patch Compilation: A Fast Compilation Algorithm for High-Level Languages and Bytecode. Proc. ACM Program. Lang. 5, OOPSLA, Article 136 (oct 2021), 30 pages. https://doi.org/10. 1145/3485513 Deegen: A JIT-Capable VM Generator for Dynamic Languages 27 A DEEGEN API REFER...
2021
-
[1953]
Classes of recursively enumerable sets and their decision problems. Trans. Amer. Math. Soc. 74 (1953), 358–366. https://api.semanticscholar.org/CorpusID:120980829 Manuel Rigger, Matthias Grimmer, and Hanspeter Mössenböck
1953
-
[1973]
Threaded Code. Commun. ACM 16, 6 (jun 1973), 370–372. https://doi.org/10.1145/362248.362270 Maxwell Bernstein
1973
-
[1977]
Expensive Procedure Call
Debunking the “Expensive Procedure Call” Myth or, Procedure Call Implementations Considered Harmful or, LAMBDA: The Ultimate GOTO. In Proceedings of the 1977 Annual Conference (Seattle, Washington) (ACM ’77). ACM, New York, NY, USA, 153–162. https://doi.org/10.1145/800179.8101...
1977
-
[1980]
Computer 13, 8 (1980), 38–49
An Overview of the Production-Quality Compiler- Compiler Project. Computer 13, 8 (1980), 38–49. https://doi.org/10.1109/MC.1980.1653748 Gabriel de Quadros Ligneul
1980
-
[1982]
In Proceedings of the 9th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Albuquerque, New Mexico) (POPL ’82)
A Semantics-Directed Compiler Generator. In Proceedings of the 9th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (Albuquerque, New Mexico) (POPL ’82). Association for Computing Machinery, New York, NY, USA, 224–233. https://doi.org/10.1145/582153.582178 N...
-
[1984]
In Proceedings of the 1984 ACM Symposium on LISP and Functional Programming (Austin, Texas, USA) (LFP ’84)
Compiling a Functional Language. In Proceedings of the 1984 ACM Symposium on LISP and Functional Programming (Austin, Texas, USA) (LFP ’84). Association for Computing Machinery, New York, NY, USA, 208–217. https://doi.org/10.1145/800055.802037 Kevin Casey, David Gregg, and M. ...
1984
-
[1989]
In Conference Proceedings on Object-Oriented Programming Systems, Languages and Applications (New Orleans, Louisiana, USA) (OOPSLA ’89)
An Efficient Implementation of SELF a Dynamically-Typed Object-Oriented Language Based on Prototypes. In Conference Proceedings on Object-Oriented Programming Systems, Languages and Applications (New Orleans, Louisiana, USA) (OOPSLA ’89). Association for Computing Machinery, N...
-
[1991]
ACM Trans
Constant propagation with conditional branches. ACM Trans. Program. Lang. Syst. 13, 2 (April 1991), 181–210. https://doi.org/10.1145/103135.103136 Wikipedia
1991
-
[1992]
In Proceedings of the ACM SIGPLAN 1992 Conference on Programming Language Design and Implementation (San Francisco, California, USA) (PLDI ’92)
Debugging Optimized Code with Dynamic Deoptimization. In Proceedings of the ACM SIGPLAN 1992 Conference on Programming Language Design and Implementation (San Francisco, California, USA) (PLDI ’92). Association for Computing Machinery, New York, NY, USA, 32–43. https://doi.org...
1992
-
[1994]
In Proceedings of the Ninth Annual Conference on Object-Oriented Programming Systems, Language, and Applications (Portland, Oregon, USA) (OOPSLA ’94)
A Third-Generation SELF Implementation: Reconciling Responsiveness with Performance. In Proceedings of the Ninth Annual Conference on Object-Oriented Programming Systems, Language, and Applications (Portland, Oregon, USA) (OOPSLA ’94). Association for Computing Machinery, New ...
-
[1997]
InProceedings of the 1997 Symposium on Software Reusability (Boston, Massachusetts, USA) (SSR ’97)
A framework for application generator design. InProceedings of the 1997 Symposium on Software Reusability (Boston, Massachusetts, USA) (SSR ’97). Association for Computing Machinery, New York, NY, USA, 131–135. https://doi.org/10.1145/258366.258408 Scott Thibault, Charles Cons...
1997
-
[2000]
Higher-Order and Symbolic Computation 13 (09 2000)
Static and Dynamic Program Compi- lation by Interpreter Specialization. Higher-Order and Symbolic Computation 13 (09 2000). https://doi.org/10.1023/A: 1010078412711 Laurence Tratt
-
[2001]
Unix Programmer’s Manual 2 (11 2001)
Yacc: Yet Another Compiler-Compiler. Unix Programmer’s Manual 2 (11 2001). Neil Jones, Carsten Gomard, and Peter Sestoft
2001
-
[2002]
Vmgen: A Generator of Efficient Virtual Machine Interpreters. Softw. Pract. Exper. 32, 3 (mar 2002), 265–294. https://doi.org/10.1002/spe.434 Tim Felgentreff
2002 doi
-
[2004]
https://doi.org/10
IEEE, San Jose, CA, USA, 75–86. https://doi.org/10. 1109/CGO.2004.1281665 Deegen: A JIT-Capable VM Generator for Dynamic Languages 25 Leverett, Cattell, Hobbs, Newcomer, Reiner, Schatz, and Wulf
2004 arXiv
-
[2005]
In Proceedings of the 14th International Conference on Compiler Construction (Edinburgh, UK) (CC’05)
Tiger – an Interpreter Generation Tool. In Proceedings of the 14th International Conference on Compiler Construction (Edinburgh, UK) (CC’05). Springer-Verlag, Berlin, Heidelberg, 246–249. https://doi.org/10.1007/978-3-540-31985-6_18 Petr Chalupa. 2019.TruffleRuby: Wrapping up ...
-
[2009]
LuaJIT 2.0 intellectual property disclosure and research opportunities . LuaJIT. http://lua-users.org/lists/lua- l/2009-11/msg00089.html Mike Pall
2009
-
[2010]
SIGPLAN Not
Efficient Interpretation Using Quickening. SIGPLAN Not. 45, 12 (oct 2010), 1–14. https://doi.org/10. 1145/1899661.1869633 Luca Cardelli
2010
-
[2011]
Unladen Swallow Retrospective . Google. https://qinsb.blogspot.com/2011/03/unladen-swallow- retrospective.html C. Lattner and V. Adve
2011
-
[2012]
The Julia Programming Language . Julia. https: //julialang.org/ B.W. Boehm, C. Abts, A.W. Brown, B.K. Clark, and S. Chulani. 2009.Software Cost Estimation with COCOMO II . Prentice Hall. https://books.google.com/books?id=cRCMQQAACAAJ Carl Friedrich Bolz and Laurence Tratt
2009
-
[2013]
In Proceedings of the 7th ACM Workshop on Virtual Machines and Intermediate Languages (Indianapolis, Indiana, USA) (VMIL ’13)
An Intermediate Representation for Speculative Optimizations in a Dynamic Compiler. In Proceedings of the 7th ACM Workshop on Virtual Machines and Intermediate Languages (Indianapolis, Indiana, USA) (VMIL ’13). Association for Computing Machinery, New York, NY, USA, 1–10. http...
-
[2014]
In Proceedings of the 2014 International Conference on Generative Programming: Concepts and Experiences (Västerås, Sweden) (GPCE 2014)
A Domain-Specific Language for Building Self-Optimizing AST Interpreters. In Proceedings of the 2014 International Conference on Generative Programming: Concepts and Experiences (Västerås, Sweden) (GPCE 2014). Association for Computing Machinery, New York, NY, USA, 123–132. ht...
2014
-
[2015]
SCICO (Feb
The impact of meta-tracing on VM design and implementation. SCICO (Feb. 2015), 408–421. https://doi.org/10.1016/j.scico.2013.02.001 Carl Friedrich Bolz-Tereick
2015 doi
-
[2016]
52, 2 (Nov
Cross-language compiler benchmarking: are we fast yet? SIGPLAN Not. 52, 2 (Nov. 2016), 120–131. https://doi.org/10.1145/3093334.2989232 Stefan Marr, Octave Larose, Sophie Kaleba, and Chris Seaton
2016
-
[2017]
Proceedings of the VLDB Endowment 11 (September 2017), 1–13
Relaxed Operator Fusion for In-Memory Databases: Making Compilation, Vectorization, and Prefetching Work Together At Last. Proceedings of the VLDB Endowment 11 (September 2017), 1–13. Issue
2017
-
[2018]
Implementing asm-goto support in Clang/LLVM . LLVM. https://lists.llvm.org/pipermail/llvm-dev/2018- October/127239.html LLVM
2018
-
[2019]
Journal of Computer Languages 51 (2019), 261–279
eJSTK: Building JavaScript virtual machines with customized datatypes for embedded systems. Journal of Computer Languages 51 (2019), 261–279. https://doi.org/10.1016/j.cola.2019. 01.003 Kannan Vijayan
2019 doi
-
[2020]
In Proceedings of the 16th ACM SIGPLAN International Symposium on Dynamic Languages (Virtual, USA) (DLS 2020)
Amalgamating Different JIT Compilations in a Meta-Tracing JIT Compiler Framework. In Proceedings of the 16th ACM SIGPLAN International Symposium on Dynamic Languages (Virtual, USA) (DLS 2020). Association for Computing Machinery, New York, NY, USA, 1–15. https://doi.org/10.114...
2020
-
[2021]
Springer
PHP 8 Revealed. Springer. https://link.springer.com/book/10.1007/978-1-4842-6818-6 M. Anton Ertl, David Gregg, Andreas Krall, and Bernd Paysan
-
[2022]
In ICS ’22: 2022 International Conference on Supercomputing, Virtual Event, USA, June 27-30, 2022 (ICS ’22) , Lawrence Rauchwerger, Kirk Cameron, Dimitrios S
uiCA: Accurate Throughput Prediction of Basic Blocks on Recent Intel Microar- chitectures. In ICS ’22: 2022 International Conference on Supercomputing, Virtual Event, USA, June 27-30, 2022 (ICS ’22) , Lawrence Rauchwerger, Kirk Cameron, Dimitrios S. Nikolopoulos, and Dionisios...
2022
-
[2023]
In Proceedings of the 38th ACM/SIGAPP Symposium on Applied Computing (Tallinn, Estonia) (SAC ’23)
Optimizing the Order of Bytecode Handlers in Interpreters using a Genetic Algorithm. In Proceedings of the 38th ACM/SIGAPP Symposium on Applied Computing (Tallinn, Estonia) (SAC ’23). Association for Computing Machinery, New York, NY, USA, 1384–1393. https://doi.org/10.1145/35...
Reviewed August 12, 2026 · model on record in the stance chip above.
Discussion (0). Continue with ORCID to comment.