The StarJIT Compiler: A Dynamic Compiler for Managed Runtime Environments

 

Dynamic compilers (or Just-in-Time [JIT] compilers) are

a key component of managed runtime environments. This

paper describes the design and implementation of the

StarJIT compiler, a dynamic compiler for Java Virtual

Machines and Common Language Runtime platforms.

The goal of the StarJIT compiler is to build an

infrastructure to research the influence of managed

runtime environments on Intel architectures. The StarJIT

compiler can compile both Java∗ and Common Language

Infrastructure (CLI) bytecodes, and it uses a single

intermediate representation and global optimization

framework for both Java and CLI. The StarJIT compiler

is designed to generate optimized code for the major Intel

architectures and currently targets two Intel architectures:

IA-32 and the Itanium Processor Family.

In this paper, we describe the overall architecture

(bytecode translators, global optimizer, and code

generators) of the StarJIT compiler and the design of its

intermediate representation, global optimizer, Itanium

Processor Family code generator, and dynamic

optimization framework. We present implementation

details on the single static assignment (SSA)-based global

optimizations [1], the Itanium Processor Family trace

scheduler, and the profile-driven dynamic optimization

framework.

Download (211.52 KB)