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

01/23/2022
by   Yusuke Izawa, et al.
0

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 created adaptive RPython, which performs both baseline JIT compilation based on threaded code and tracing JIT compilation. We also implemented a small programming language with it. Furthermore, we preliminarily evaluated the performance of that small language, and our baseline JIT compilation ran 1.77x faster than the interpreter-only execution. Furthermore, we observed that when we apply an optimal JIT compilation for different target methods, the performance was mostly the same as the one optimizing JIT compilation strategy, saving about 40 compilation code size.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
12/15/2021

Exploring Aspects of Polyglot High-Performance Virtual Machine GraalVM

Contemporary software often becomes vastly complex, and we are required ...
research
06/23/2021

Threaded Code Generation with a Meta-tracing JIT Compiler

Language implementation frameworks, e.g., RPython and Truffle/Graal, are...
research
08/30/2020

Employing Simulation to Facilitate the Design of Dynamic Code Generators

Dynamic Translation (DT) is a sophisticated technique that allows the im...
research
11/06/2020

Amalgamating Different JIT Compilations in a Meta-tracing JIT Compiler Framework

Many modern virtual machines, such as JVMs, .NET Framework, and V8, empl...
research
01/13/2020

Towards High Performance Java-based Deep Learning Frameworks

The advent of modern cloud services along with the huge volume of data p...
research
03/27/2018

Fast, Flexible, Polyglot Instrumentation Support for Debuggers and other Tools

Context: Software development tools that interact with running programs ...
research
08/29/2019

Improving the Performance of the Paisley Pattern-Matching EDSL by Staged Combinatorial Compilation

Paisley is a declarative lightweight embedded domain-specific language f...

Please sign up or login with your details

Forgot password? Click here to reset