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.