JIT compilers that transform JVML and CIL programs, respectively, into machine code have been developed for the most common computer systems.
Most existing stack-based JIT compilers solve this problem by expending compilation effort to transform their input programs into an internal three-address code representation (often in SSA form) on which the optimizations are performed.
In principle, JIT compilers based on these intermediate representations can be just as effective as static compilers.
SafeTSA successfully augments a tree-oriented intermediate representation with instructions in SSA form, which is already used internally in several static and JIT compilers and that is considered the state-of-the-art intermediate representation for intra-procedural scalar optimizations.
In recent years program annotations have been suggested as a way to improve the code generation of JIT compilers.
Intel includes a JIT compiler with the VTune optimization package for Java that interfaces with the Microsoft JVM [Adl-Tabatabai et al.
1998] is a reflective JIT compiler written in Java.
The open-source Kaffe project provides a JIT compiler for the Kaffe JVM that supports various operating systems on the x86, Sparc, M68k, MIPS, Alpha, and PARisc architectures [Wilkinson, Kaffe v0.
These annotations carry compiler optimization-related information that allow the JIT compiler to generate optimized native code without extensive runtime analysis.
CACAO is a stand-alone JIT compiler for the DEC ALPHA architecture [Krall and Graft 1997].
The Metrowerks JIT compiler is based on a re-targetable architecture and we will work with volunteers in the Linux community to ensure the success of their efforts to support Java on the Linux platform.
Binary versions of the JIT compiler are immediately available for Linux on PowerPC desktop processors.