SSA Form and Register Allocation for the HotSpot Client Compiler

Projects > Compiler and JVM Research at JKU

We changed the high-level intermediate representation of the client compiler to use static single assignment (SSA) form, which simplifies global optimizations. Additionally, we implemented a global register allocator that uses the linear scan algorithm. This work is part of the production version since Java 6.


  • Thomas Kotzmann, Christian Wimmer, Hanspeter Mössenböck, Thomas Rodriguez, Kenneth Russell, David Cox:
    Design of the Java HotSpot™ Client Compiler for Java 6
    In ACM Transactions on Architecture and Code Optimization, volume 5, issue 1, article 7. ACM Press, 2008. doi:10.1145/1369396.1370017
    Explains the structure of the client compiler, its intermediate representations, and the optimization algorithms. It describes the client compiler of the Java HotSpot™ VM of Java 6. Java 7 and OpenJDK contain no significant changes, so all information up-to-date.
  • Christian Wimmer:
    Linear Scan Register Allocation for the Java HotSpot™ Client Compiler
    Master's thesis, Institute for System Software, Johannes Kepler University Linz, 2004.
    Extended description of the client compiler, with a focus on the register allocator. Read Chapter 4 for if you are interested in the details of the compiler and the intermediate representations. The term "research compiler" in this thesis refers to the product version of Java 6 (which was not released at the time of writing).
  • Christian Wimmer, Hanspeter Mössenböck:
    Optimized Interval Splitting in a Linear Scan Register Allocator
    ACM/USENIX Intl. Conf. on Virtual Execution Environments (VEE'05), pp. 132-141. ACM Press, 2005. doi:10.1145/1064979.1064998
    Description of the register allocation algorithm of the current client compiler.
  • Hanspeter Mössenböck, Michael Pfeiffer:
    Linear Scan Register Allocation in the Context of SSA Form and Register Constraints
    Intl. Conf. on Compiler Construction (CC'02), LNCS 2304, pp. 229-246. Springer-Verlag, 2002.
    Describes an early version of the work, so it does not reflect the current product version.
  • Hanspeter Mössenböck:
    Adding Static Single Assignment Form and a Graph Coloring Register Allocator to the Java HotSpot™ Client Compiler
    Technical Report 15, Institute for Practical Computer Science, Johannes Kepler University Linz, 2000.
    Describes an early version of the work, so it does not reflect the current product version. The graph coloring register allocator was later replaced by the linear scan register allocator.