JVM 2001 Abstract
The Java HotSpot Server Compiler
Christopher Vick, and
Cliff Click, Sun Microsystems
Performance for the Java
Platform has evolved in
stages. Early VM's were interpreter-only. Later
VM's were interpreter plus template generated code,
and finally interpreter plus optimized code. The Java
HotSpot Virtual Machine
through optimization of frequently executed application code. The Client version provides very fast compilation times and a small footprint with modest levels
of optimization. The Server version applies more aggressive optimizations to achieve improved asymptotic
performance. These optimizations include class-hierarchy aware inlining, fast-path/slow-path idioms,
global value-numbering, optimistic constant propagation, optimal instruction selection, graph-coloring
register allocation, and peephole optimization.
The first section describes the runtime environment
that both the compiler and generated code execute
within. Section two summarizes the structure of the
server compiler. Sections three through section seventeen cover each phase of compilation in order. Solutions for specific language and runtime issues are
described close to the compilation phase that addresses
them. Last is a short description of phase costs and
performance of generated code. Some names that occur in the compiler's source code are used within the
text for readers who download the source under Sun's
Community Source License [HS2.0]. The first occurrence of these names is emphasized to avoid confusion.
- View the full text of this paper in
- If you need the latest Adobe Acrobat Reader, you can download it from Adobe's site.
- To become a USENIX Member, please see our Membership Information.