• Corpus ID: 246240486

Two-level Just-in-Time Compilation with One Interpreter and One Engine

  title={Two-level Just-in-Time Compilation with One Interpreter and One Engine},
  author={Yusuke Izawa and Hidehiko Masuhara and Carl Friedrich Bolz-Tereick},
Modern, powerful virtual machines such as those running Java or JavaScript support multi-tier JIT compilation and optimization features to achieve their high performance. However, implementing and maintaining several compilers/optimizers that interact with each other requires hard-working VM developers. In this paper, we propose a technique to realize two-level JIT compilation in RPython without implementing several interpreters or compilers from scratch. As a preliminary realization, we… 

Figures from this paper


Threaded Code Generation with a Meta-tracing JIT Compiler
A meta-hybrid JIT compiler framework to take advantages of the two strategies as a language implementation framework and to use it for further speed-up by preventing the path-divergence problem, which causes serious slowdown.
Practical partial evaluation for high-performance dynamic language runtimes
This work defines languages solely by writing an interpreter and develops a general-purpose compilation system that is competitive with production systems even when they have been heavily optimized for the one language they support.
Tracing the meta-level: PyPy's tracing JIT compiler
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.
Pycket: a tracing JIT for a functional language
Pycket supports a wide variety of the sophisticated features in Racket such as contracts, continuations, classes, structures, dynamic binding, and more, and outperforms existing compilers, both Racket's JIT and other highly-optimizing Scheme compilers.
Runtime feedback in a meta-tracing JIT for efficient dynamic languages
The mechanisms in PyPy's meta-tracing JIT that can be used to control runtime feedback in language-specific ways are described, which are flexible enough to express classical VM techniques such as maps and runtime type feedback.
Improving Sequential Performance of Erlang Based on a Meta-tracing Just-In-Time Compiler
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.
Implementing jalapeño in Java
Jalapeño is a virtual machine for Java#8482; servers written in Java that reduces the Java / non-Java boundary below the virtual machine rather than above it, and opens up more opportunities for optimization.
Threaded code designs for Forth interpreters
Forth interpreters can utilize several techniques for implementing threaded code, and these techniques are classified to better understand the mechanisms underlying "threaded interpretive languages", or TILs.
Efficient implementation of the smalltalk-80 system
The most significant optimization techniques developed over the course of the Smalltalk-80 programming system are discussed, many of which are applicable to other languages.
The Java HotSpotTM Server Compiler
The Java HotSpot TM Server Compiler achieves improved asymptotic performance through a combination of ob− ject−oriented and classical−compiler optimizations. Aggressive inlining using class−hierarchy