{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T04:33:25Z","timestamp":1750221205803,"version":"3.41.0"},"publisher-location":"New York, New York, USA","reference-count":54,"publisher":"ACM Press","license":[{"start":{"date-parts":[[2018,1,1]],"date-time":"2018-01-01T00:00:00Z","timestamp":1514764800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2018]]},"DOI":"10.1145\/3237009.3237013","type":"proceedings-article","created":{"date-parts":[[2018,8,30]],"date-time":"2018-08-30T14:00:37Z","timestamp":1535637637000},"page":"1-13","source":"Crossref","is-referenced-by-count":10,"title":["Fast-path loop unrolling of non-counted loops to enable subsequent compiler optimizations"],"prefix":"10.1145","author":[{"given":"David","family":"Leopoldseder","sequence":"first","affiliation":[{"name":"Johannes Kepler University Linz, Austria"}]},{"given":"Roland","family":"Schatz","sequence":"additional","affiliation":[{"name":"Oracle Labs, Linz, Austria"}]},{"given":"Lukas","family":"Stadler","sequence":"additional","affiliation":[{"name":"Oracle Labs, Linz, Austria"}]},{"given":"Manuel","family":"Rigger","sequence":"additional","affiliation":[{"name":"Johannes Kepler University Linz, Austria"}]},{"given":"Thomas","family":"W\u00fcrthinger","sequence":"additional","affiliation":[{"name":"Oracle Labs, Zurich, Switzerland"}]},{"given":"Hanspeter","family":"M\u00f6ssenb\u00f6ck","sequence":"additional","affiliation":[{"name":"Johannes Kepler University Linz, Austria"}]}],"member":"320","reference":[{"key":"key-10.1145\/3237009.3237013-1","unstructured":"Vicki H Allan, Reese B Jones, Randall M Lee, and Stephen J Allan. 1995. Software pipelining. ACM Computing Surveys (CSUR) 27, 3 (1995), 367--432."},{"key":"key-10.1145\/3237009.3237013-2","doi-asserted-by":"crossref","unstructured":"David F. Bacon, Susan L. Graham, and Oliver J. Sharp. 1994. Compiler Transformations for High-performance Computing. ACM Comput. Surv. 26, 4 (Dec. 1994), 345--420.","DOI":"10.1145\/197405.197406"},{"key":"key-10.1145\/3237009.3237013-3","doi-asserted-by":"crossref","unstructured":"S. M. Blackburn, R. Garner, C. Hoffman, A. M. Khan, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, A. Phansalkar, D. Stefanovi&#263;, T. VanDrunen, D. von Dincklage, and B. Wiedermann. 2006. The DaCapo Benchmarks: Java Benchmarking Development and Analysis. In Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications. ACM Press, 169--190.","DOI":"10.1145\/1167473.1167488"},{"key":"key-10.1145\/3237009.3237013-4","doi-asserted-by":"crossref","unstructured":"Andreu Carminati, Renan Augusto Starke, and R&#244;mulo Silva de Oliveira. 2017. Combining loop unrolling strategies and code predication to reduce the worst-case execution time of real-time software. Applied Computing and Informatics 13, 2 (2017), 184--193.","DOI":"10.1016\/j.aci.2017.03.002"},{"key":"key-10.1145\/3237009.3237013-5","doi-asserted-by":"crossref","unstructured":"Steve Carr, Chen Ding, and Philip Sweany. 1996. Improving Software Pipelining With Unroll-and-Jam. In System Sciences, 1996., Proceedings of the Twenty-Ninth Hawaii International Conference on,, Vol. 1. IEEE, 183--192.","DOI":"10.1109\/HICSS.1996.495462"},{"key":"key-10.1145\/3237009.3237013-6","unstructured":"Stefano Cazzulani. 2012. Octane: The JavaScript benchmark suite for the modern web. Retrieved December 21 (2012), 2015."},{"key":"key-10.1145\/3237009.3237013-7","doi-asserted-by":"crossref","unstructured":"Alan E Charlesworth. 1981. An approach to scientific array processing: The architectural design of the AP-120B\/FPS-164 family. Computer 14, 9 (1981), 18--27.","DOI":"10.1109\/C-M.1981.220595"},{"key":"key-10.1145\/3237009.3237013-8","doi-asserted-by":"crossref","unstructured":"Cliff Click. 1995. Global Code Motion\/Global Value Numbering. In Proceedings of the ACM SIGPLAN 1995 Conference on Programming Language Design and Implementation (PLDI '95). ACM, New York, NY, USA, 246--257.","DOI":"10.1145\/207110.207154"},{"key":"key-10.1145\/3237009.3237013-9","unstructured":"Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck. 1991. Efficiently Computing Static Single Assignment Form and the Control Dependence Graph. ACM Trans. Program. Lang. Syst. 13, 4 (Oct. 1991), 40."},{"key":"key-10.1145\/3237009.3237013-10","unstructured":"Jack W Davidson and Sanjay Jinturkar. 1995. An aggressive approach to loop unrolling. Technical Report. Technical Report CS-95-26, Department of Computer Science, University of Virginia, Charlottesville."},{"key":"key-10.1145\/3237009.3237013-11","unstructured":"Jack W Davidson and Sanjay Jinturkar. 1995. Improving instruction-level parallelism by loop unrolling and dynamic memory disambiguation. In Microarchitecture, 1995., Proceedings of the 28th Annual International Symposium on. IEEE, 125--132."},{"key":"key-10.1145\/3237009.3237013-12","unstructured":"Jack W Davidson and Sanjay Jinturkar. 1996. Aggressive loop unrolling in a retargetable, optimizing compiler. In International Conference on Compiler Construction. Springer, 59--73."},{"key":"key-10.1145\/3237009.3237013-13","unstructured":"Edsger Wybe Dijkstra, Edsger Wybe Dijkstra, Edsger Wybe Dijkstra, Etats-Unis Informaticien, and Edsger Wybe Dijkstra. 1976. A discipline of programming. Vol. 1. prentice-hall Englewood Cliffs."},{"key":"key-10.1145\/3237009.3237013-14","unstructured":"Thomas J. Watson IBM Research Center. Research Division, FE Allen, and J Cocke. 1971. A catalogue of optimizing transformations."},{"key":"key-10.1145\/3237009.3237013-15","unstructured":"Amer Diwan, Kathryn S. McKinley, and J. Eliot B. Moss. 1998. Type-based Alias Analysis. (1998), 106--117."},{"key":"key-10.1145\/3237009.3237013-16","unstructured":"Gilles Duboscq, Lukas Stadler, Thomas W&#252;rthinger, Doug Simon, Christian Wimmer, and Hanspeter M&#246;ssenb&#246;ck. 2013. Graal IR: An Extensible Declarative Intermediate Representation. In Proceedings of the Asia-Pacific Programming Languages and Compilers Workshop."},{"key":"key-10.1145\/3237009.3237013-17","doi-asserted-by":"crossref","unstructured":"Sara El-Shobaky, Ahmed El-Mahdy, and Ahmed El-Nahas. 2009. Automatic Vectorization Using Dynamic Compilation and Tree Pattern Matching Technique in Jikes RVM. In Proceedings of the 4th workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems. ACM, 63--69.","DOI":"10.1145\/1565824.1565833"},{"key":"key-10.1145\/3237009.3237013-18","unstructured":"Michael Frigge, David C. Hoaglin, and Boris Iglewicz. 1989. Some Implementations of the Boxplot. The American Statistician 43, 1 (1989), 50--54. http:\/\/www.jstor.org\/stable\/2685173"},{"key":"key-10.1145\/3237009.3237013-19","doi-asserted-by":"crossref","unstructured":"Yoshihiko Futamura. 1999. Partial Evaluation of Computation Process-An Approach to a Compiler-Compiler. Higher-Order and Symbolic Computation 12, 4 (01 Dec 1999), 381--391.","DOI":"10.1023\/A:1010095604496"},{"key":"key-10.1145\/3237009.3237013-20","doi-asserted-by":"crossref","unstructured":"Philip B. Gibbons and Steven S. Muchnick. 1986. Efficient Instruction Scheduling for a Pipelined Architecture. In Proceedings of the 1986 SIGPLAN Symposium on Compiler Construction (SIGPLAN '86). ACM, New York, NY, USA, 11--16.","DOI":"10.1145\/12276.13312"},{"key":"key-10.1145\/3237009.3237013-21","unstructured":"Google. 2018. V8 JavaScript Engine. (2018). https:\/\/chromium.googlesource.com\/v8\/v8.git"},{"key":"key-10.1145\/3237009.3237013-22","doi-asserted-by":"crossref","unstructured":"Andreas Haas, Andreas Rossberg, Derek L Schuff, Ben L Titzer, Michael Holman, Dan Gohman, Luke Wagner, Alon Zakai, and JF Bastien. 2017. Bringing the web up to speed with WebAssembly. In Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation. ACM, 185--200.","DOI":"10.1145\/3062341.3062363"},{"key":"key-10.1145\/3237009.3237013-23","doi-asserted-by":"crossref","unstructured":"Peter Hofer, David Gnedt, Andreas Sch&#246;rgenhumer, and Hanspeter M&#246;ssenb&#246;ck. 2016. Efficient tracing and versatile analysis of lock contention in Java applications on the virtual machine level. In Proceedings of the 7th ACM\/SPEC on International Conference on Performance Engineering. ACM, 263--274.","DOI":"10.1145\/2851553.2851559"},{"key":"key-10.1145\/3237009.3237013-24","unstructured":"HotSpot JVM 2013. Java Version History (J2SE 1.3). (2013). http:\/\/en.wikipedia.org\/wiki\/Java_version_history"},{"key":"key-10.1145\/3237009.3237013-25","doi-asserted-by":"crossref","unstructured":"Jung-Chang Huang and Tau Leng. 1999. Generalized loop-unrolling: a method for program speedup. In Application-Specific Systems and Software Engineering and Technology, 1999. ASSET'99. Proceedings. 1999 IEEE Symposium on. IEEE, 244--248.","DOI":"10.1109\/ASSET.1999.756775"},{"key":"key-10.1145\/3237009.3237013-26","unstructured":"Wen-Mei W. Hwu, Scott A. Mahlke, William Y. Chen, Pohua P. Chang, Nancy J. Warter, Roger A. Bringmann, Roland G. Quellette, Richard E. Hank, Tokuzo Kiyohara, Grant E. Haab, John G. Holm, and Daniel M. Lavery. 1995. Instruction-level Parallel Processors. IEEE Computer Society Press, Chapter The Superblock: An Effective Technique for VLIW and Superscalar Compilation, 234--253. http:\/\/dl.acm.org\/citation.cfm?id=201749.201774"},{"key":"key-10.1145\/3237009.3237013-27","doi-asserted-by":"crossref","unstructured":"Andreas Krall and Sylvain Lelait. 2000. Compilation techniques for multimedia processors. International Journal of Parallel Programming 28, 4 (2000), 347--361.","DOI":"10.1023\/A:1007507005174"},{"key":"key-10.1145\/3237009.3237013-28","doi-asserted-by":"crossref","unstructured":"Philipp Lengauer and Hanspeter M&#246;ssenb&#246;ck. 2014. The taming of the shrew: increasing performance by automatic parameter tuning for java garbage collectors. In Proceedings of the 5th ACM\/SPEC international conference on Performance engineering. ACM, 111--122.","DOI":"10.1145\/2568088.2568091"},{"key":"key-10.1145\/3237009.3237013-29","doi-asserted-by":"crossref","unstructured":"David Leopoldseder, Lukas Stadler, Thomas W&#252;rthinger, Josef Eisl, Doug Simon, and Hanspeter M&#246;ssenb&#246;ck. 2018. Dominance-based Duplication Simulation (DBDS): Code Duplication to Enable Compiler Optimizations. In Proceedings of the 2018 International Symposium on Code Generation and Optimization (CGO 2018). ACM, New York, NY, USA, 126--137.","DOI":"10.1145\/3168811"},{"key":"key-10.1145\/3237009.3237013-30","doi-asserted-by":"crossref","unstructured":"Yau-Tsun Steven Li, Sharad Malik, and Andrew Wolfe. 1999. Performance Estimation of Embedded Software with Instruction Cache Modeling. ACM Trans. Des. Autom. Electron. Syst. 4, 3 (1999), 257--279.","DOI":"10.1145\/315773.315778"},{"key":"key-10.1145\/3237009.3237013-31","doi-asserted-by":"crossref","unstructured":"Jin Lin, Tong Chen, Wei-Chung Hsu, Pen-Chung Yew, Roy Dz-Ching Ju, Tin-Fook Ngai, and Sun Chan. 2003. A Compiler Framework for Speculative Analysis and Optimizations. In Proceedings of the ACM SIGPLAN 2003 Conference on Programming Language Design and Implementation (PLDI '03). ACM, New York, NY, USA, 289--299.","DOI":"10.1145\/781131.781164"},{"key":"key-10.1145\/3237009.3237013-32","unstructured":"Yi Lin, Kunshan Wang, Stephen M. Blackburn, Antony L. Hosking, and Michael Norrish. 2015. Stop and Go: Understanding Yieldpoint Behavior. (2015), 70--80."},{"key":"key-10.1145\/3237009.3237013-33","unstructured":"Tim Lindholm, Frank Yellin, Gilad Bracha, and Alex Buckley. 2015. The Java Virtual Machine Specification, Java SE 8 Edition. http:\/\/docs.oracle.com\/javase\/specs\/jvms\/se8\/jvms8.pdf"},{"key":"key-10.1145\/3237009.3237013-34","doi-asserted-by":"crossref","unstructured":"Luis Mastrangelo, Luca Ponzanelli, Andrea Mocci, Michele Lanza, Matthias Hauswirth, and Nathaniel Nystrom. 2015. Use at Your Own Risk: The Java Unsafe API in the Wild. In Proceedings of the 2015 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2015). ACM, New York, NY, USA, 695--710.","DOI":"10.1145\/2814270.2814313"},{"key":"key-10.1145\/3237009.3237013-35","unstructured":"OpenJDK 2013. Graal Project. (2013). http:\/\/openjdk.java.net\/projects\/graal"},{"key":"key-10.1145\/3237009.3237013-36","unstructured":"OpenJDK 2017. GraalVM -New JIT Compiler and Polyglot Runtime for the JVM;. (2017). http:\/\/www.oracle.com\/technetwork\/oracle-labs\/program-languages\/overview\/index-2301583.html"},{"key":"key-10.1145\/3237009.3237013-37","unstructured":"Oracle. 2015. Loop Optimizations in the Hotspot Server VM Compiler (C2). (2015). https:\/\/wiki.openjdk.java.net\/pages\/viewpage.action?pageId=20415918"},{"key":"key-10.1145\/3237009.3237013-38","unstructured":"Michael Paleczny, Christopher Vick, and Cliff Click. 2001. The Java HotSpotTM Server Compiler. In Proceedings of the Java Virtual Machine Research and Technology Symposium. USENIX, 1--12."},{"key":"key-10.1145\/3237009.3237013-39","unstructured":"Filip Pizlo. 2014. JetStream Benchmark Suite. (2014). http:\/\/browserbench.org\/JetStream\/"},{"key":"key-10.1145\/3237009.3237013-40","doi-asserted-by":"crossref","unstructured":"Aleksandar Prokopec, David Leopoldseder, Gilles Duboscq, and Thomas W&#252;rthinger. 2017. Making Collection Operations Optimal with Aggressive JIT Compilation. In Proceedings of the 8th ACM SIGPLAN International Symposium on Scala (SCALA 2017). ACM, New York, NY, USA, 29--40.","DOI":"10.1145\/3136000.3136002"},{"key":"key-10.1145\/3237009.3237013-41","doi-asserted-by":"crossref","unstructured":"Vivek Sarkar. 2000. Optimized unrolling of nested loops. In Proceedings of the 14th international conference on Supercomputing. ACM, 153--166.","DOI":"10.1145\/335231.335246"},{"key":"key-10.1145\/3237009.3237013-42","doi-asserted-by":"crossref","unstructured":"Andreas Sewe, Mira Mezini, Aibek Sarimbekov, and Walter Binder. 2011. Da Capo con Scala: design and analysis of a scala benchmark suite for the java virtual machine. In Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications. ACM Press, 657--676.","DOI":"10.1145\/2048066.2048118"},{"key":"key-10.1145\/3237009.3237013-43","doi-asserted-by":"crossref","unstructured":"Lukas Stadler, Gilles Duboscq, Hanspeter M&#246;ssenb&#246;ck, Thomas W&#252;rthinger, and Doug Simon. 2013. An Experimental Study of the Influence of Dynamic Compiler Optimizations on Scala Performance. In Proceedings of the 4th Workshop on Scala (SCALA '13). ACM, New York, NY, USA, Article 9, 8 pages.","DOI":"10.1145\/2489837.2489846"},{"key":"key-10.1145\/3237009.3237013-44","doi-asserted-by":"crossref","unstructured":"Lukas Stadler, Thomas W&#252;rthinger, and Hanspeter M&#246;ssenb&#246;ck. 2014. Partial Escape Analysis and Scalar Replacement for Java. In Proceedings of the International Symposium on Code Generation and Optimization. ACM Press, 165--174.","DOI":"10.1145\/2581122.2544157"},{"key":"key-10.1145\/3237009.3237013-45","unstructured":"Standard Performance Evaluation Corporation. 2008. SPECjvm2008. (2008). http:\/\/www.spec.org\/jvm2008\/"},{"key":"key-10.1145\/3237009.3237013-46","unstructured":"Bogong Su and Jing Wang. 1991. Loop-carried dependence and the general URPR software pipelining approach (unrolling, pipelining and rerolling). In System Sciences, 1991. Proceedings of the Twenty-Fourth Annual Hawaii International Conference on, Vol. 2. IEEE, 366--372."},{"key":"key-10.1145\/3237009.3237013-47","doi-asserted-by":"crossref","unstructured":"April W. Wade, Prasad A. Kulkarni, and Michael R. Jantz. 2017. AOT vs. JIT: Impact of Profile Data on Code Quality. In Proceedings of the 18th ACM SIGPLAN\/SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES 2017). ACM, New York, NY, USA, 1--10.","DOI":"10.1145\/3078633.3081037"},{"key":"key-10.1145\/3237009.3237013-48","doi-asserted-by":"crossref","unstructured":"Michael Wolfe. 1992. Beyond Induction Variables. In Proceedings of the ACM SIGPLAN 1992 Conference on Programming Language Design and Implementation (PLDI '92). ACM, New York, NY, USA, 162--174.","DOI":"10.1145\/143095.143131"},{"key":"key-10.1145\/3237009.3237013-49","doi-asserted-by":"crossref","unstructured":"Andreas W&#246;&#223;, Christian Wirth, Daniele Bonetta, Chris Seaton, Christian Humer, and Hanspeter M&#246;ssenb&#246;ck. 2014. An object storage model for the truffle language implementation framework. In Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java platform: Virtual machines, Languages, and Tools. ACM, 133--144.","DOI":"10.1145\/2647508.2647517"},{"key":"key-10.1145\/3237009.3237013-50","doi-asserted-by":"crossref","unstructured":"Thomas W&#252;rthinger, Christian Wimmer, Christian Humer, Andreas W&#246;&#223;, Lukas Stadler, Chris Seaton, Gilles Duboscq, Doug Simon, and Matthias Grimmer. 2017. Practical Partial Evaluation for High-performance Dynamic Language Runtimes. In Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2017). ACM, New York, NY, USA, 662--676.","DOI":"10.1145\/3062341.3062381"},{"key":"key-10.1145\/3237009.3237013-51","doi-asserted-by":"crossref","unstructured":"Thomas W&#252;rthinger, Christian Wimmer, and Lukas Stadler. 2010. Dynamic code evolution for Java. In Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java. ACM, 10--19.","DOI":"10.1145\/1852761.1852764"},{"key":"key-10.1145\/3237009.3237013-52","doi-asserted-by":"crossref","unstructured":"Thomas W&#252;rthinger, Christian Wimmer, Andreas W&#246;&#223;, Lukas Stadler, Gilles Duboscq, Christian Humer, Gregor Richards, Doug Simon, and Mario Wolczko. 2013. One VM to rule them all. In Proceedings of the 2013 ACM international symposium on New ideas, new paradigms, and reflections on programming &#38; software. ACM, 187--204.","DOI":"10.1145\/2509578.2509581"},{"key":"key-10.1145\/3237009.3237013-53","doi-asserted-by":"crossref","unstructured":"Thomas W&#252;rthinger, Andreas W&#246;&#223;, Lukas Stadler, Gilles Duboscq, Doug Simon, and Christian Wimmer. 2012. Self-optimizing AST interpreters. In Proceedings of the 8th symposium on Dynamic languages (DLS '12). ACM Press, 73--82.","DOI":"10.1145\/2384577.2384587"},{"key":"key-10.1145\/3237009.3237013-54","doi-asserted-by":"crossref","unstructured":"Alon Zakai. 2011. Emscripten: an LLVM-to-JavaScript compiler. In Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion. ACM, 301--312.","DOI":"10.1145\/2048147.2048224"}],"event":{"name":"the 15th International Conference","start":{"date-parts":[[2018,9,12]]},"number":"15","location":"Linz, Austria","end":{"date-parts":[[2018,9,13]]},"acronym":"ManLang '18"},"container-title":["Proceedings of the 15th International Conference on Managed Languages &amp; Runtimes  - ManLang '18"],"original-title":[],"link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3237009.3237013","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/dl.acm.org\/ft_gateway.cfm?id=3237013&ftid=1999827&dwn=1","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T01:39:34Z","timestamp":1750210774000},"score":1,"resource":{"primary":{"URL":"http:\/\/dl.acm.org\/citation.cfm?doid=3237009.3237013"}},"subtitle":[],"proceedings-subject":"Managed Languages & Runtimes","short-title":[],"issued":{"date-parts":[[2018]]},"references-count":54,"URL":"https:\/\/doi.org\/10.1145\/3237009.3237013","relation":{},"subject":[],"published":{"date-parts":[[2018]]}}}