K. Ishizaki et al., Design, implementation, and evaluation of optimizations in a Java (TM) Just-in-Time compiler, CONCURRENCY, 12(6), 2000, pp. 457-475
The Java language incurs a runtime overhead for exception checks and object
accesses, which are executed without an interior pointer in order to ensur
e safety. It also requires type inclusion test, dynamic class loading, and
dynamic method calls in order to ensure flexibility, A 'Just-In-Time' (JIT)
compiler generates native code from Java byte code at runtime. It must imp
rove the runtime performance without compromising the safety and flexibilit
y of the Java language. We designed and implemented effective optimizations
for a JIT compiler, such as exception check elimination, common subexpress
ion elimination, simple type inclusion test, method inlining, and devirtual
ization of dynamic method call, We evaluate the performance benefits of the
se optimizations based on various statistics collected using SPECjvm98, its
candidates, and two JavaSoft applications with byte code sizes ranging fro
m 23 000 to 280 000 bytes, Each optimization contributes to an improvement
in the performance of the programs, Copyright (C) 2000 John Wiley & Sons, L
td.