{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,24]],"date-time":"2026-02-24T17:28:13Z","timestamp":1771954093189,"version":"3.50.1"},"reference-count":66,"publisher":"Association for Computing Machinery (ACM)","issue":"1","license":[{"start":{"date-parts":[[2008,5,1]],"date-time":"2008-05-01T00:00:00Z","timestamp":1209600000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Archit. Code Optim."],"published-print":{"date-parts":[[2008,5]]},"abstract":"<jats:p>Version 6 of Sun Microsystems' Java HotSpot\u2122 VM ships with a redesigned version of the client just-in-time compiler that includes several research results of the last years. The client compiler is at the heart of the VM configuration used by default for interactive desktop applications. For such applications, low startup and pause times are more important than peak performance. This paper outlines the new architecture of the client compiler and shows how it interacts with the VM. It presents the intermediate representation that now uses static single-assignment (SSA) form and the linear scan algorithm for global register allocation. Efficient support for exception handling and deoptimization fulfills the demands that are imposed by the dynamic features of the Java programming language. The evaluation shows that the new client compiler generates better code in less time. The popular SPECjvm98 benchmark suite is executed 45% faster, while the compilation speed is also up to 40% better. This indicates that a carefully selected set of global optimizations can also be integrated in just-in-time compilers that focus on compilation speed and not on peak performance. In addition, the paper presents the impact of several optimizations on execution and compilation speed. As the source code is freely available, the Java HotSpot\u2122 VM and the client compiler are the ideal basis for experiments with new feedback-directed optimizations in a production-level Java just-in-time compiler. The paper outlines research projects that add fast algorithms for escape analysis, automatic object inlining, and array bounds check elimination.<\/jats:p>","DOI":"10.1145\/1369396.1370017","type":"journal-article","created":{"date-parts":[[2008,6,3]],"date-time":"2008-06-03T15:11:43Z","timestamp":1212505903000},"page":"1-32","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":116,"title":["Design of the Java HotSpot\u2122 client compiler for Java 6"],"prefix":"10.1145","volume":"5","author":[{"given":"Thomas","family":"Kotzmann","sequence":"first","affiliation":[{"name":"Johannes Kepler University Linz, Austria"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Christian","family":"Wimmer","sequence":"additional","affiliation":[{"name":"Johannes Kepler University Linz, Austria"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Hanspeter","family":"M\u00f6ssenb\u00f6ck","sequence":"additional","affiliation":[{"name":"Johannes Kepler University Linz, Austria"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Thomas","family":"Rodriguez","sequence":"additional","affiliation":[{"name":"Sun Microsystems, Inc., Santa Clara, CA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Kenneth","family":"Russell","sequence":"additional","affiliation":[{"name":"Sun Microsystems, Inc., Santa Clara, CA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"David","family":"Cox","sequence":"additional","affiliation":[{"name":"Sun Microsystems, Inc., Santa Clara, CA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2008,5,29]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/277650.277740"},{"key":"e_1_2_1_2_1","first-page":"19","article-title":"The StarJIT compiler: A dynamic compiler for managed runtime environments","volume":"7","author":"Adl-Tabatabai A.-R.","year":"2003","journal-title":"Intel Tech. J."},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/320384.320402"},{"key":"e_1_2_1_4_1","unstructured":"Allen J. R. and Kennedy K. 2002. Optimizing compilers for modern architectures. Morgan Kaufmann Publi. Burlington MA.]]   Allen J. R. and Kennedy K. 2002. Optimizing compilers for modern architectures. Morgan Kaufmann Publi. Burlington MA.]]"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1147\/sj.391.0211"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/353171.353175"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1109\/JPROC.2004.840305"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/277650.277734"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/945885.945886"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/349299.349342"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/113445.113459"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/177492.177575"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1002\/(SICI)1097-024X(199706)27:6%3C701::AID-SPE104%3E3.3.CO;2-S"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/304065.304113"},{"key":"e_1_2_1_15_1","unstructured":"C1Visualizer 2007. Java HotSpot#8482; Client Compiler Visualizer. https:\/\/c1visualizer.dev.java.net\/.]]  C1Visualizer 2007. Java HotSpot#8482; Client Compiler Visualizer. https:\/\/c1visualizer.dev.java.net\/.]]"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/316158.316171"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/945885.945892"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/349299.349306"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1002\/cpe.v17:5\/6"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/202529.202534"},{"key":"e_1_2_1_21_1","unstructured":"Coward D. 2006. What's New in Java SE 6. http:\/\/java.sun.com\/developer\/technicalArticles\/J2SE\/Desktop\/javase6\/beta2.html.]]  Coward D. 2006. What's New in Java SE 6. http:\/\/java.sun.com\/developer\/technicalArticles\/J2SE\/Desktop\/javase6\/beta2.html.]]"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/115372.115320"},{"key":"e_1_2_1_23_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming. LNCS 952","author":"Dean J."},{"key":"e_1_2_1_24_1","volume-title":"Proceedings of the European Conference on Object-Oriented Programming. LNCS 1628","author":"Detlefs D."},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/349299.349344"},{"key":"e_1_2_1_26_1","volume-title":"Proceedings of the International Symposium on Code Generation and Optimization. IEEE Computer Society","author":"Fink S. J."},{"key":"e_1_2_1_27_1","unstructured":"Gosling J. Joy B. Steele G. and Bracha G. 2005. The Java Language Specification 3rd ed. Addison-Wesley Reading MA.]]   Gosling J. Joy B. Steele G. and Bracha G. 2005. The Java Language Specification 3rd ed. Addison-Wesley Reading MA.]]"},{"key":"e_1_2_1_28_1","unstructured":"Griesemer R. and Mitrovic S. 2000. A compiler for the Java HotSpot#8482; virtual machine. In The School of Niklaus Wirth: The Art of Simplicity L. B\u00f6sz\u00f6rm\u00e9nyi J. Gutknecht and G. Pomberger Eds. dpunkt.verlag. Heidelberg Germany 133--152.]]   Griesemer R. and Mitrovic S. 2000. A compiler for the Java HotSpot#8482; virtual machine. In The School of Niklaus Wirth: The Art of Simplicity L. B\u00f6sz\u00f6rm\u00e9nyi J. Gutknecht and G. Pomberger Eds. dpunkt.verlag. Heidelberg Germany 133--152.]]"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/178243.178478"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/143095.143114"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/949305.949322"},{"key":"e_1_2_1_32_1","unstructured":"Jikes 2007. Jikes RVM. http:\/\/jikesrvm.org\/.]]  Jikes 2007. Jikes RVM. http:\/\/jikesrvm.org\/.]]"},{"key":"e_1_2_1_33_1","volume-title":"Garbage Collection: Algorithms for Automatic Dynamic Memory Management","author":"Jones R.","year":"1996"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/582419.582433"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/378993.379234"},{"key":"e_1_2_1_36_1","doi-asserted-by":"crossref","unstructured":"Kotzmann T. 2005. Escape analysis in the context of dynamic compilation and deoptimization. Ph.D. thesis Johannes Kepler University Linz.]]  Kotzmann T. 2005. Escape analysis in the context of dynamic compilation and deoptimization. Ph.D. thesis Johannes Kepler University Linz.]]","DOI":"10.1145\/1064979.1064996"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/1064979.1064996"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2007.34"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1002\/cpe.v17:5\/6"},{"key":"e_1_2_1_40_1","unstructured":"Lindholm T. and Yellin F. 1999. The Java Virtual Machine Specification 2nd ed. Addison-Wesley Reading MA.]]   Lindholm T. and Yellin F. 1999. The Java Virtual Machine Specification 2nd ed. Addison-Wesley Reading MA.]]"},{"key":"e_1_2_1_41_1","unstructured":"M\u00f6ssenb\u00f6ck H. 2000. Adding static single assignment form and a graph coloring register allocator to the Java HotSpot#8482; client compiler. Tech. Rept. 15 Institute for Practical Computer Science Johannes Kepler University Linz.]]  M\u00f6ssenb\u00f6ck H. 2000. Adding static single assignment form and a graph coloring register allocator to the Java HotSpot#8482; client compiler. Tech. Rept. 15 Institute for Practical Computer Science Johannes Kepler University Linz.]]"},{"key":"e_1_2_1_42_1","volume-title":"Proceedings of the International Conference on Compiler Construction. LNCS 2304","author":"M\u00f6ssenb\u00f6ck H."},{"key":"e_1_2_1_43_1","unstructured":"OpenJDK 2007. Homepage of the Open-Source JDK Community. Sun Microsystems Inc. http:\/\/openjdk.java.net\/.]]  OpenJDK 2007. Homepage of the Open-Source JDK Community. Sun Microsystems Inc. http:\/\/openjdk.java.net\/.]]"},{"key":"e_1_2_1_44_1","unstructured":"ORP 2007. Open Runtime Platform. Intel Corp. http:\/\/sourceforge.net\/projects\/orp\/.]]  ORP 2007. Open Runtime Platform. Intel Corp. http:\/\/sourceforge.net\/projects\/orp\/.]]"},{"key":"e_1_2_1_45_1","volume-title":"Proceedings of the Java Virtual Machine Research and Technology Symposium. USENIX. 1--12","author":"Paleczny M."},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/330249.330250"},{"key":"e_1_2_1_47_1","unstructured":"Pozo R. and Miller B. 1999. SciMark 2.0. http:\/\/math.nist.gov\/scimark2\/.]]  Pozo R. and Miller B. 1999. SciMark 2.0. http:\/\/math.nist.gov\/scimark2\/.]]"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/362422.362480"},{"key":"e_1_2_1_49_1","volume-title":"Proceedings of the International Conference on Compiler Construction. LNCS 2304","author":"Qian F."},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/1167473.1167496"},{"key":"e_1_2_1_51_1","unstructured":"Sedgewick R. 1988. Algorithms 2nd ed. Addison-Wesley Reading MA. 441--449.]]   Sedgewick R. 1988. Algorithms 2nd ed. Addison-Wesley Reading MA. 441--449.]]"},{"key":"e_1_2_1_52_1","volume-title":"Proceedings of the 7th workshop on Interaction Between Compilers and Computer Architectures. IEEE Computer Society, Los Alamitos, 5--13","author":"Shiv K."},{"key":"e_1_2_1_53_1","unstructured":"SPEC 1998. The SPECjvm98 Benchmarks. Standard Performance Evaluation Corporation. http:\/\/www.spec.org\/jvm98\/.]]  SPEC 1998. The SPECjvm98 Benchmarks. Standard Performance Evaluation Corporation. http:\/\/www.spec.org\/jvm98\/.]]"},{"key":"e_1_2_1_54_1","unstructured":"SPEC 2005. The SPECjbb2005 Benchmark. Standard Performance Evaluation Corporation. http:\/\/www.spec.org\/jbb2005\/.]]  SPEC 2005. The SPECjbb2005 Benchmark. Standard Performance Evaluation Corporation. http:\/\/www.spec.org\/jbb2005\/.]]"},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.5555\/1077764.1077778"},{"key":"e_1_2_1_56_1","doi-asserted-by":"publisher","DOI":"10.1145\/1075382.1075386"},{"key":"e_1_2_1_57_1","unstructured":"Sun Microsystems Inc. 2006a. The Java HotSpot#8482; Performance Engine Architecture. Sun Microsystems Inc. http:\/\/java.sun.com\/products\/hotspot\/whitepaper.html.]]  Sun Microsystems Inc. 2006a. The Java HotSpot#8482; Performance Engine Architecture. Sun Microsystems Inc. http:\/\/java.sun.com\/products\/hotspot\/whitepaper.html.]]"},{"key":"e_1_2_1_58_1","unstructured":"Sun Microsystems Inc. 2006b. Java Platform Standard Edition 6 Source Snapshot Releases. Sun Microsystems Inc. http:\/\/download.java.net\/jdk6\/.]]  Sun Microsystems Inc. 2006b. Java Platform Standard Edition 6 Source Snapshot Releases. Sun Microsystems Inc. http:\/\/download.java.net\/jdk6\/.]]"},{"key":"e_1_2_1_59_1","unstructured":"Sun Microsystems Inc. 2006c. Memory Management in the Java HotSpot#8482; Virtual Machine. Sun Microsystems Inc. http:\/\/java.sun.com\/j2se\/reference\/whitepapers\/memorymanagement_whitepa per.pdf.]]  Sun Microsystems Inc. 2006c. Memory Management in the Java HotSpot#8482; Virtual Machine. Sun Microsystems Inc. http:\/\/java.sun.com\/j2se\/reference\/whitepapers\/memorymanagement_whitepa per.pdf.]]"},{"key":"e_1_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/277650.277714"},{"key":"e_1_2_1_61_1","doi-asserted-by":"publisher","DOI":"10.1145\/800020.808261"},{"key":"e_1_2_1_62_1","unstructured":"Wimmer C. 2004. Linear scan register allocation for the Java HotSpot#8482; client compiler. M.S. thesis Johannes Kepler University Linz.]]  Wimmer C. 2004. Linear scan register allocation for the Java HotSpot#8482; client compiler. M.S. thesis Johannes Kepler University Linz.]]"},{"key":"e_1_2_1_63_1","doi-asserted-by":"publisher","DOI":"10.1145\/1064979.1064998"},{"key":"e_1_2_1_64_1","doi-asserted-by":"publisher","DOI":"10.5555\/2111746.2111766"},{"key":"e_1_2_1_65_1","doi-asserted-by":"publisher","DOI":"10.1145\/1254810.1254813"},{"key":"e_1_2_1_66_1","doi-asserted-by":"publisher","DOI":"10.1145\/1294325.1294343"}],"container-title":["ACM Transactions on Architecture and Code Optimization"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1369396.1370017","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/1369396.1370017","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T14:51:43Z","timestamp":1750258303000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/1369396.1370017"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2008,5]]},"references-count":66,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2008,5]]}},"alternative-id":["10.1145\/1369396.1370017"],"URL":"https:\/\/doi.org\/10.1145\/1369396.1370017","relation":{},"ISSN":["1544-3566","1544-3973"],"issn-type":[{"value":"1544-3566","type":"print"},{"value":"1544-3973","type":"electronic"}],"subject":[],"published":{"date-parts":[[2008,5]]},"assertion":[{"value":"2006-12-07","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2007-09-08","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2008-05-29","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}