The HotSpot Java Client Compiler from Sun Microsystems is a just-in-time compiler that
translates Java bytecodes to Intel machine code. In cooperation with Sun Microsystems we
try to improve the quality of the generated code by load/store elimination, common subexpression elimination and register allocation. Our compiler is based on static single assignment form as an intermediate program representation. One of the challenges of this project is to find a reasonable tradeoff between code quality and compilation speed (which is highly important in JIT compilation).
We exchanged our graph coloring register allocator with a linear scan alloctor, which is nearly as good as graph coloring but several times faster. We exploit lifetime holes and use instruction weights to improve the quality of the allocation.