We present the design and implementation of several optimizations and techn
iques included in the latest IBM Java(TM) Just-in-Time (JIT) Compiler. We f
irst discuss some of the modifications we have applied to Sun Microsystems'
reference implementation of the Java Virtual Machine (JVM(TM)) Specificati
on to increase the performance, including a change in the object layout We
then describe each of the optimizations, referring to what had to be taken
into account because of both the just-in-time nature of the compiler and th
e requirements of the Java language specification, such as exception checki
ng. We also present code generation techniques targeting Intel architecture
s, describing the register allocation schemes, exception handling, and code
scheduling. Finally we report on the performance of the IBM JIT compiler,
showing both the effectiveness of the individual optimizations and the comp
etitive overall performance of the JIT compiler in comparison with a compet
itor using industry-standard benchmarking programs. All the techniques pres
ented here are included in the official product (JIT Compiler version 3.0),
which has been integrated into the ISM Developer Kit for Windows(TM), Java
Technology Edition, Version 1.1.7.