Threaded Code Generation with a Meta-tracing JIT Compiler
@article{Izawa2021ThreadedCG, title={Threaded Code Generation with a Meta-tracing JIT Compiler}, author={Yusuke Izawa and Hidehiko Masuhara and Carl Friedrich Bolz-Tereick and Youyou Cong}, journal={J. Object Technol.}, year={2021}, volume={21}, pages={2:1-11} }
Language implementation frameworks such as RPython and Truffle/Graal are effective tools for creating a high-performance language with lower effort than implementing from scratch. The two frameworks support only a single JIT compilation strategy, tracebased compilation and method-based compilation, but they have its own advantages and disadvantages. We proposed a meta-hybrid JIT compiler framework to take advantages of the two strategies as a language implementation framework. We also…
One Citation
Two-level Just-in-Time Compilation with One Interpreter and One Engine
- Computer ScienceArXiv
- 2022
This paper proposes a technique to realize two-level JIT compilation in RPython without implementing several interpreters or compilers from scratch, and created adaptive RPython, which performs both baseline Jit compilation based on threaded code and tracing JIT compiling.
References
SHOWING 1-10 OF 28 REFERENCES
Amalgamating different JIT compilations in a meta-tracing JIT compiler framework
- Computer ScienceDLS
- 2020
This paper presents a new approach, namely, the meta-hybrid JIT compilation strategy that combines trace-based and method-based compilations to utilize the advantages of both strategies and performs a synthetic experiment to confirm that there are programs that run faster by hybrid compilation.
Tracing the meta-level: PyPy's tracing JIT compiler
- Computer ScienceICOOOLPS@ECOOP
- 2009
This paper shows how to guide tracing JIT compilers to greatly improve the speed of bytecode interpreters, and how to unroll the bytecode dispatch loop, based on two kinds of hints provided by the implementer of thebytecode interpreter.
A trace-based Java JIT compiler retrofitted from a method-based compiler
- Computer ScienceInternational Symposium on Code Generation and Optimization (CGO 2011)
- 2011
This paper describes the design and implementation of a trace-JIT for Java developed from a production-quality method-based JIT compiler and shows the potentials of trace-based compilation as an alternative or complementary approach to compiling languages with mature method- based compilers.
Trace-based just-in-time type specialization for dynamic languages
- Computer SciencePLDI '09
- 2009
This work presents an alternative compilation technique for dynamically-typed languages that identifies frequently executed loop traces at run-time and then generates machine code on the fly that is specialized for the actual dynamic types occurring on each path through the loop.
Tracing vs. partial evaluation: comparing meta-compilation approaches for self-optimizing interpreters
- Computer ScienceOOPSLA 2015
- 2015
This study investigates both approaches in the context of self-optimizing interpreters, a technique for building fast abstract-syntax-tree interpreters and finds that tracing and partial evaluation both reach roughly the same level of performance.
Self-optimizing AST interpreters
- Computer ScienceDLS
- 2012
This work presents a novel approach to implementing AST interpreters in which the AST is modified during interpretation to incorporate type feedback, which is a general and powerful mechanism to optimize many constructs common in dynamic programming languages.
PyPy's approach to virtual machine construction
- Computer ScienceOOPSLA '06
- 2006
The PyPy project seeks to prove both on a research and a practical level the feasibility of constructing a virtual machine (VM) for a dynamic language in a dynamic language - in this case, Python.…
Improving the performance of trace-based systems by false loop filtering
- Computer ScienceASPLOS XVI
- 2011
False loop filtering is proposed, an approach to reject false loops in the repetition detection step of trace selection, and a technique called false loop filtering by call-stack-comparison, which rejects a cyclic path as a false loop if the call stacks at the beginning and the end of the cycle are different.
Improving Sequential Performance of Erlang Based on a Meta-tracing Just-In-Time Compiler
- Computer ScienceTFP
- 2016
Pyrlang, an Erlang virtual machine with a just-in-time (JIT) compiler by applying an existing meta-tracing JIT compiler is developed, showing approximately 38% speedup over the standard Erlang interpreter.
Dynamo: a transparent dynamic optimization system
- Computer ScienceSIGP
- 2011
We describe the design and implementation of Dynamo, a software dynamic optimization system that is capable of transparently improving the performance of a native instruction stream as it executes on…