...
- Thomas Würthinger, Christian Wimmer, Hanspeter Mössenböck: Array Bounds Check Elimination in the Context of Deoptimization. In Science of Computer Programming, volume 74, issue 5-6, pages 279-295. Elsevier, 2009. doi:10.1016/j.scico.2009.01.002
Journal paper that describes the optimization process. It shows how deoptimization is used, compares the algorithm with the server compiler, and contains an extensive evaluation.
- Thomas Würthinger, Christian Wimmer, Hanspeter Mössenböck: Array Bounds Check Elimination for the Java HotSpot™ Client Compiler. In Proceedings of the International Conference on Principles and Practice of Programming in Java, pages 125-133. ACM Press, 2007. doi:10.1145/1294325.1294343
Conference paper that describes the optimization process, with a focus on the usage of deoptimization to avoid code duplication.
...
- 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.
Tail Calls
Tail calls are necessary when compiling functional languages, like Scheme, to Java bytecodes. It guarantees that no stack frame is created for recursive calls and thus no stack overflow occurs. Tail calls are supported in the interpreter, the client compiler, and the server compiler. The source code is available from the Da Vinci Machine project.
- Arnold Schwaighofer: Tail Call Optimization in the Java HotSpot™ VM. Master's thesis, Institute for System Software, Johannes Kepler University Linz, 2009.
This thesis describes the complete architecture and implementation of the virtual machine changes, together with a comprehensive evaluation.
...