...
- 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).
- Hanspeter Mössenböck, Michael Pfeiffer: Linear Scan Register Allocation in the Context of SSA Form and Register Constraints. In Proceedings of the International Conference on Compiler Construction, LNCS 2304, pages 229-246. Springer-Verlag, 2002.
Describes an early version of the work, so it does not reflect the current product version.
...
- Homepage of the Java HotSpot™ Client Compiler Visualizer: https://c1visualizer.dev.java.net/
Image Removed
The homepage contains the binary download, the source code repository, and the documentation (several bachelor theses and master's theses).
Ideal Graph Visualizer
| Anchor |
|---|
| IdealGraphVisualizer |
|---|
| IdealGraphVisualizer |
|---|
|
The Java HotSpot™ server compiler uses a single intermediate representation in all compiler phases, called ideal graph. The tool saves snapshots of the graph during the compilation. It displays the graphs and provides filtering mechanisms based on customizable JavaScript code and regular expressions. High performance and sophisticated navigation possibilities enable the tool to handle large graphs with thousands of nodes. The tool will be part of the OpenJDK soon, but there is no release available yet.
- Thomas Würthinger: Visualization of Program Dependence Graphs. Master's thesis, Institute for System Software, Johannes Kepler University Linz, 2007.
This thesis describes the architecture and implementation of the tool and also contains a user guide. It does not describe the final version, but is still up-to-date.
...
...
- Christian Häubl, Christian Wimmer, Hanspeter Mössenböck: Optimized Strings for the Java HotSpot™ Virtual Machine. To be published in Proceedings of the International Conference on Principles and Practice of Programming in Java. ACM Press, 2008.
- Christian Häubl: Optimized Strings for the Java HotSpot™ Virtual Machine. Master's thesis, Institute for System Software, Johannes Kepler University Linz, 2008.
This thesis describes the complete architecture and implementation of the optimization, together with a comprehensive evaluation.
...
In this research project, we implemented a fast algorithm for escape analysis. It detects objects that are accessible only by a single method or thread. Its results are used to replace fields of objects with scalar variables, to allocate objects on the stack instead of the heap, and to remove synchronization. The produced machine code is smaller and executes faster because fewer objects are allocated on the heap and the garbage collector runs less frequently. Deoptimization is used to handle dynamic class loading. There are currently no plans to integrate this work into the product version, however it influenced the implementation of escape analysis for the server compiler.
...
- Christian Wimmer, Hanspeter Mössenböck: Feedback-Directed Object Inlining and Array Inlining. Technical Report, Institute for System Software, Johannes Kepler University Linz, 2008.
Summary report that covers all parts of the optimization, but does not describe the algorithmic details. Read this if you want to get familiar with the topic.
- Christian Wimmer: Automatic Object Inlining in a Java Virtual Machine. PhD thesis, Institute for System Software, Johannes Kepler University Linz, 2008.
Describes the details of all algorithms and contains an extensive evaluation as well as a survey of related work. Read this if you are interested in the implementation details.
- Christian Wimmer, Hanspeter Mössenböck: Automatic Object Colocation Based on Read Barriers. In Proceedings of the Joint Modular Languages Conference, LNCS 4228, pages 326-345. Springer-Verlag, 2006. doi:10.1007/11860990_20
Conference paper that covers only the object colocation part. It describes an early version of the work, so it does not fully reflect the final version.