{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,11]],"date-time":"2026-04-11T02:12:15Z","timestamp":1775873535718,"version":"3.50.1"},"reference-count":127,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2023,6,26]],"date-time":"2023-06-26T00:00:00Z","timestamp":1687737600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"name":"Oracle","award":["1332"],"award-info":[{"award-number":["1332"]}]},{"DOI":"10.13039\/501100001711","name":"Swiss National Science Foundation","doi-asserted-by":"crossref","award":["200020_188688"],"award-info":[{"award-number":["200020_188688"]}],"id":[{"id":"10.13039\/501100001711","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Program. Lang. Syst."],"published-print":{"date-parts":[[2023,6,30]]},"abstract":"<jats:p>Tracking specific events in a program\u2019s execution, such as object allocation or lock acquisition, is at the heart of dynamic analysis. Despite the apparent simplicity of this task, quantifying these events is challenging due to the presence of compiler optimizations. Profiling perturbs the optimizations that the compiler would normally do\u2014a profiled program usually behaves differently than the original one.<\/jats:p><jats:p>In this article, we propose a novel technique for quantifying compiler-internal events in the optimized code, reducing the profiling perturbation on compiler optimizations. Our technique achieves this by instrumenting the program from within the compiler, and by delaying the instrumentation until the point in the compilation pipeline after which no subsequent optimizations can remove the events. We propose two different implementation strategies of our technique based on path-profiling, and a modification to the standard path-profiling algorithm that facilitates the use of the proposed strategies in a modern<jats:bold>just-in-time (JIT)<\/jats:bold>compiler. We use our technique to analyze the behaviour of the optimizations in Graal, a state-of-the-art compiler for the Java Virtual Machine, identifying the reasons behind a performance improvement of a specific optimization, and the causes behind an unexpected slowdown of another. Finally, our evaluation results show that the two proposed implementations result in a significantly lower execution-time overhead w.r.t.\u00a0a naive implementation.<\/jats:p>","DOI":"10.1145\/3591473","type":"journal-article","created":{"date-parts":[[2023,4,10]],"date-time":"2023-04-10T13:16:27Z","timestamp":1681132587000},"page":"1-50","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":9,"title":["Optimization-Aware Compiler-Level Event Profiling"],"prefix":"10.1145","volume":"45","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-7219-9077","authenticated-orcid":false,"given":"Matteo","family":"Basso","sequence":"first","affiliation":[{"name":"Universit\u00e0 della Svizzera italiana (USI), Faculty of Informatics, Switzerland"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-0260-2729","authenticated-orcid":false,"given":"Aleksandar","family":"Prokopec","sequence":"additional","affiliation":[{"name":"Oracle Labs, Switzerland"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-6467-0113","authenticated-orcid":false,"given":"Andrea","family":"Ros\u00e0","sequence":"additional","affiliation":[{"name":"Universit\u00e0 della Svizzera italiana (USI), Faculty of Informatics, Switzerland"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-2477-2182","authenticated-orcid":false,"given":"Walter","family":"Binder","sequence":"additional","affiliation":[{"name":"Universit\u00e0 della Svizzera italiana (USI), Faculty of Informatics, Switzerland"}]}],"member":"320","published-online":{"date-parts":[[2023,6,26]]},"reference":[{"key":"e_1_3_2_2_2","unstructured":"2023. Akka Website. https:\/\/akka.io\/."},{"key":"e_1_3_2_3_2","unstructured":"2023. Twitter Finagle. https:\/\/twitter.github.io\/finagle\/guide\/Quickstart.html."},{"key":"e_1_3_2_4_2","doi-asserted-by":"publisher","DOI":"10.1147\/sj.442.0399"},{"key":"e_1_3_2_5_2","doi-asserted-by":"crossref","unstructured":"Glenn Ammons Thomas Ball and James R. Larus. 1997. Exploiting hardware performance counters with flow and context sensitive profiling(PLDI\u201997). 85\u201396.","DOI":"10.1145\/258916.258924"},{"key":"e_1_3_2_6_2","doi-asserted-by":"crossref","unstructured":"Matthew Arnold Stephen Fink Vivek Sarkar and Peter Sweeney. 2000. A comparative study of static and profile-based heuristics for inlining(DYNAMO\u201900). 52\u201364.","DOI":"10.1145\/351403.351416"},{"key":"e_1_3_2_7_2","unstructured":"Phil Bagwell. 2001. Ideal Hash Trees . (2001). Technical report October 2001.http:\/\/infoscience.epfl.ch\/record\/64398."},{"key":"e_1_3_2_8_2","doi-asserted-by":"publisher","DOI":"10.1145\/186025.186027"},{"key":"e_1_3_2_9_2","doi-asserted-by":"publisher","DOI":"10.1145\/183432.183527"},{"key":"e_1_3_2_10_2","unstructured":"Thomas Ball and James Larus. 1996. Efficient path profiling(MICRO\u201996). 46\u201357."},{"key":"e_1_3_2_11_2","doi-asserted-by":"crossref","unstructured":"Matteo Basso Andrea Ros\u00e0 Luca Omini and Walter Binder. 2023. Java vector API: Benchmarking and performance analysis(CC\u201923). 1\u201312.","DOI":"10.1145\/3578360.3580265"},{"key":"e_1_3_2_12_2","doi-asserted-by":"crossref","unstructured":"Matteo Basso Eduardo Rosales Filippo Schiavio Andrea Ros\u00e0 and Walter Binder. 2022. Accurate fork-join profiling on the Java virtual machine(Euro-Par\u201922). 35\u201350.","DOI":"10.1007\/978-3-031-12597-3_3"},{"key":"e_1_3_2_13_2","first-page":"1","volume-title":"XRay: A Function Call Tracing System","author":"Berris Dean Michael","year":"2016","unstructured":"Dean Michael Berris, Alistair Veitch, Nevin Heintze, Eric Anderson, and Ning Wang. 2016. XRay: A Function Call Tracing System. Technical Report. 1\u20138 pages."},{"key":"e_1_3_2_14_2","doi-asserted-by":"crossref","unstructured":"Stephen M. Blackburn Robin Garner Chris Hoffmann Asjad M. Khang Kathryn S. McKinley Rotem Bentzur Amer Diwan Daniel Feinberg Daniel Frampton Samuel Z. Guyer Martin Hirzel Antony Hosking Maria Jump Han Lee J. Eliot B. Moss Aashish Phansalkar Darko Stefanovi\u0107 Thomas VanDrunen Daniel von Dincklage and Ben Wiedermann. 2006. The DaCapo benchmarks: Java benchmarking development and analysis(OOPSLA\u201906). 169\u2013190.","DOI":"10.1145\/1167515.1167488"},{"key":"e_1_3_2_15_2","unstructured":"Michael David Bond and Kathryn McKinley. 2005. Continuous path and edge profiling(MICRO\u201905). 11\u2013140."},{"key":"e_1_3_2_16_2","doi-asserted-by":"crossref","unstructured":"Rodrigo Bruno Lu\u00eds Picciochi Oliveira and Paulo Ferreira. 2017. NG2C: Pretenuring garbage collection with dynamic generations for HotSpot big data applications(ISMM\u201917). 2\u201313.","DOI":"10.1145\/3156685.3092272"},{"key":"e_1_3_2_17_2","doi-asserted-by":"crossref","unstructured":"Michael Burke Jong-Deok Choi Stephen Fink David Grove Michael Hind Vivek Sarkar Mauricio Jose Serrano Vugranam Sreedhar Harini Srinivasan and John Whaley. 1999. The Jalape\u00f1o dynamic optimizing compiler for Java(JAVA\u201999). 129\u2013141.","DOI":"10.1145\/304065.304113"},{"key":"e_1_3_2_18_2","doi-asserted-by":"publisher","DOI":"10.1109\/12.241594"},{"key":"e_1_3_2_19_2","doi-asserted-by":"crossref","unstructured":"Cliff Click. 1995. Global code motion\/global value numbering(PLDI\u201995). 246\u2013257.","DOI":"10.1145\/223428.207154"},{"key":"e_1_3_2_20_2","doi-asserted-by":"crossref","unstructured":"Cliff Click and Michael Paleczny. 1995. A simple graph-based intermediate representation(IR\u201995). 35\u201349.","DOI":"10.1145\/202530.202534"},{"key":"e_1_3_2_21_2","doi-asserted-by":"crossref","unstructured":"Cliff Click and John Rose. 2002. Fast subtype checking in the HotSpot JVM(JGI\u201902). 96\u2013107.","DOI":"10.1145\/583810.583821"},{"key":"e_1_3_2_22_2","doi-asserted-by":"publisher","DOI":"10.1145\/115372.115320"},{"key":"e_1_3_2_23_2","unstructured":"DaCapo Project. 2018. The DaCapo Benchmark Suite. http:\/\/dacapobench.sourceforge.net\/."},{"key":"e_1_3_2_24_2","doi-asserted-by":"crossref","unstructured":"Benoit Daloze Chris Seaton Daniele Bonetta and Hanspeter M\u00f6ssenb\u00f6ck. 2015. Techniques and applications for guest-language safepoints(ICOOOLPS\u201915). 8:1\u20138:10.","DOI":"10.1145\/2843915.2843921"},{"key":"e_1_3_2_25_2","doi-asserted-by":"crossref","unstructured":"David Detlefs and Ole Agesen. 1999. Inlining of virtual methods(ECOOP\u201999). 258\u2013278.","DOI":"10.1007\/3-540-48743-3_12"},{"key":"e_1_3_2_26_2","unstructured":"David Dice. 2001. Implementing fast Java monitors with relaxed-locks(USENIX JVM\u201901). 79\u201390."},{"key":"e_1_3_2_27_2","unstructured":"Dave Dice. 2006. Biased Locking in HotSpot. https:\/\/blogs.oracle.com\/dave\/biased-locking-in-hotspot."},{"key":"e_1_3_2_28_2","unstructured":"David Dice Mark Moir and William Scherer III. 2003. Quickly reacquirable locks (patent). US7814488B1 (2003) 1\u201319. https:\/\/patents.google.com\/patent\/US7814488B1\/en."},{"key":"e_1_3_2_29_2","unstructured":"Gilles Duboscq Lukas Stadler Thomas Wuerthinger Doug Simon Christian Wimmer and Hanspeter M\u00f6ssenb\u00f6ck. 2013. Graal IR: An extensible declarative intermediate representation(APPLC\u201913). 1\u20139."},{"key":"e_1_3_2_30_2","doi-asserted-by":"crossref","unstructured":"Gilles Duboscq Thomas W\u00fcrthinger Lukas Stadler Christian Wimmer Doug Simon and Hanspeter M\u00f6ssenb\u00f6ck. 2013. An intermediate representation for speculative optimizations in a dynamic compiler(VMIL\u201913). 1\u201310.","DOI":"10.1145\/2542142.2542143"},{"key":"e_1_3_2_31_2","unstructured":"Gilles Marie Duboscq. 2016. Combining Speculative Optimizations with Flexible Scheduling of Side-Effects. https:\/\/resolver.obvsg.at\/urn:nbn:at:at-ubl:1-9708."},{"key":"e_1_3_2_32_2","doi-asserted-by":"crossref","unstructured":"Alexis Engelke and Martin Schulz. 2020. Instrew: Leveraging LLVM for high performance dynamic binary instrumentation(VEE\u201920). 172\u2013184.","DOI":"10.1145\/3381052.3381319"},{"key":"e_1_3_2_33_2","doi-asserted-by":"crossref","unstructured":"Stijn Eyerman Lieven Eeckhout Tejas Karkhanis and James Smith. 2006. A performance counter architecture for computing accurate CPI components(ASPLOS XII). 175\u2013184.","DOI":"10.1145\/1168918.1168880"},{"key":"e_1_3_2_34_2","doi-asserted-by":"crossref","unstructured":"Stijn Eyerman Lieven Eeckhout and James Smith. 2008. Studying compiler optimizations on superscalar processors through interval analysis(HiPEAC\u201908\u2019). 114\u2013129.","DOI":"10.1007\/978-3-540-77560-7_9"},{"key":"e_1_3_2_35_2","doi-asserted-by":"crossref","unstructured":"Stijn Eyerman James Smith and Lieven Eeckhout. 2006. Characterizing the branch miss prediction penalty(ISPASS\u201906). 48\u201358.","DOI":"10.1109\/ISPASS.2006.1620789"},{"key":"e_1_3_2_36_2","volume-title":"Statistical Methods for Research Workers","author":"Fisher R. A.","year":"1925","unstructured":"R. A. Fisher. 1925. Statistical Methods for Research Workers. Oliver & Boyd (Edinburgh)."},{"key":"e_1_3_2_37_2","unstructured":"Free Software Foundation. 2021. GCC the GNU Compiler Collection. https:\/\/gcc.gnu.org\/."},{"key":"e_1_3_2_38_2","unstructured":"Free Software Foundation. 2021. Passes and Files of the Compiler. https:\/\/gcc.gnu.org\/onlinedocs\/gccint\/Passes.html."},{"key":"e_1_3_2_39_2","unstructured":"Free Software Foundation. 2021. Plugin Pass (GNU Compiler Collection (GCC) Internals). https:\/\/gcc.gnu.org\/onlinedocs\/gccint\/Plugins-pass.html#Plugins-pass."},{"key":"e_1_3_2_40_2","doi-asserted-by":"crossref","unstructured":"Alex Garthwaite David Dice and Derek White. 2005. Supporting per-processor local-allocation buffers using lightweight user-level preemption notification(VEE\u201905). 24\u201334.","DOI":"10.1145\/1064979.1064985"},{"key":"e_1_3_2_41_2","doi-asserted-by":"crossref","unstructured":"Giorgis Georgakoudis Ignacio Laguna Dimitrios Nikolopoulos and Martin Schulz. 2017. REFINE: Realistic fault injection via compiler-based instrumentation for accuracy portability and speed(SC\u201917). 29:1\u201329:14.","DOI":"10.1145\/3126908.3126972"},{"key":"e_1_3_2_42_2","doi-asserted-by":"crossref","unstructured":"Andy Georges Lieven Eeckhout and Dries Buytaert. 2008. Java performance evaluation through rigorous replay compilation(OOPSLA\u201908). 1\u201318.","DOI":"10.1145\/1449764.1449794"},{"key":"e_1_3_2_43_2","unstructured":"GitHub. 2019. Graal Issue 1541. https:\/\/github.com\/oracle\/graal\/issues\/1541."},{"key":"e_1_3_2_44_2","unstructured":"GitHub. 2021. JikesRVM OptimizationPlanner. https:\/\/github.com\/JikesRVM\/JikesRVM\/blob\/38b21f5a663016dbf43771cb2d231f74db0a01c6\/rvm\/src\/org\/jikesrvm\/compilers\/opt\/driver\/OptimizationPlanner.java#L285."},{"key":"e_1_3_2_45_2","unstructured":"Google. 2021. An Overview of the TurboFan Compiler. https:\/\/docs.google.com\/presentation\/d\/1H1lLsbclvzyOF3IUR05ZUaZcqDxo7_-8f4yJoxdMooU\/edit#slide=id.g18ceb14729_0_135."},{"key":"e_1_3_2_46_2","unstructured":"Google. 2022. TurboFan. https:\/\/v8.dev\/docs\/turbofan."},{"key":"e_1_3_2_47_2","doi-asserted-by":"crossref","unstructured":"Susan Lois Graham Peter Bernard Kessler and Marshall Kirk Mckusick. 1982. Gprof: A call graph execution profiler(SIGPLAN\u201982). 120\u2013126.","DOI":"10.1145\/872726.806987"},{"key":"e_1_3_2_48_2","unstructured":"Nikola Grcevski Allan Kielstra Kevin Stoodley Mark Stoodley and Vijay Sundaresan. 2004. Java just-in-time compiler and virtual machine improvements for server and middleware applications(VM\u201904). 1\u201312."},{"key":"e_1_3_2_49_2","doi-asserted-by":"crossref","unstructured":"Rachid Guerraoui Michal Kapalka and Jan Vitek. 2007. STMBench7: A benchmark for software transactional memory(EuroSys\u201907). 315\u2013324.","DOI":"10.1145\/1272998.1273029"},{"key":"e_1_3_2_50_2","doi-asserted-by":"publisher","DOI":"10.1145\/3428334"},{"key":"e_1_3_2_51_2","doi-asserted-by":"crossref","unstructured":"Urs H\u00f6lzle Craig Chambers and David Ungar. 1992. Debugging optimized code with dynamic deoptimization(PLDI\u201992). 32\u201343.","DOI":"10.1145\/143103.143114"},{"key":"e_1_3_2_52_2","doi-asserted-by":"crossref","unstructured":"Urs H\u00f6lzle and David Ungar. 1994. Optimizing dynamically-dispatched calls with run-time type feedback(PLDI\u201994). 326\u2013336.","DOI":"10.1145\/773473.178478"},{"key":"e_1_3_2_53_2","unstructured":"Urs H\u00f6lzle. 1993. A fast write barrier for generational garbage collectors.OOPSLA\/ECOOP\u201993 Workshop on Garbage Collection in Object-Oriented Systems. 1\u20136."},{"key":"e_1_3_2_54_2","unstructured":"Jikes\u2122 RVM project. 2021. Profiling Applications with Jikes RVM. https:\/\/www.jikesrvm.org\/UserGuide\/ProfilingApplicationsWithJikesRVM\/index.html#x10-990008."},{"key":"e_1_3_2_55_2","unstructured":"John Rose. 2011. Java Enhancement Proposal 243: Java-Level JVM Compiler Interface. https:\/\/openjdk.java.net\/jeps\/243."},{"key":"e_1_3_2_56_2","doi-asserted-by":"crossref","unstructured":"Tejas Karkhanis and James Smith. 2004. A first-order superscalar processor model(ISCA\u201904). 338.","DOI":"10.1145\/1028176.1006729"},{"key":"e_1_3_2_57_2","unstructured":"Tanvir Ahmed Khan Akshitha Sriraman Joseph Devietti Gilles Pokam Heiner Litz and Baris Kasikci. 2020. I-SPY: Context-driven conditional instruction prefetching with coalescing(MICRO\u201920). 146\u2013159."},{"key":"e_1_3_2_58_2","doi-asserted-by":"publisher","DOI":"10.1145\/1369396.1370017"},{"key":"e_1_3_2_59_2","unstructured":"Chris Lattner and Vikram Adve. 2004. LLVM: A compilation framework for lifelong program analysis & transformation(CGO\u201904). 75\u201387."},{"key":"e_1_3_2_60_2","first-page":"36","volume-title":"Java Grande","author":"Lea Doug","year":"2000","unstructured":"Doug Lea. 2000. A Java fork\/join framework. In Java Grande. 36\u201343."},{"key":"e_1_3_2_61_2","unstructured":"Jan-Patrick Lehr. 2016. Counting performance: Hardware performance counter and compiler instrumentation(IWOMP\u201916). 2187\u20132198."},{"key":"e_1_3_2_62_2","doi-asserted-by":"crossref","unstructured":"David Leopoldseder Roland Schatz Lukas Stadler Manuel Rigger Thomas W\u00fcrthinger and Hanspeter M\u00f6ssenb\u00f6ck. 2018. Fast-path loop unrolling of non-counted loops to enable subsequent compiler optimizations(ManLang\u201918). 1\u201313.","DOI":"10.1145\/3237009.3237013"},{"key":"e_1_3_2_63_2","doi-asserted-by":"crossref","unstructured":"David Leopoldseder Lukas Stadler Manuel Rigger Thomas W\u00fcrthinger and Hanspeter M\u00f6ssenb\u00f6ck. 2018. A cost model for a graph-based intermediate-representation in a dynamic compiler(VMIL\u201918). 26\u201335.","DOI":"10.1145\/3281287.3281290"},{"key":"e_1_3_2_64_2","doi-asserted-by":"crossref","unstructured":"David Leopoldseder Lukas Stadler Thomas W\u00fcrthinger Josef Eisl Doug Simon and Hanspeter M\u00f6ssenb\u00f6ck. 2018. Dominance-based duplication simulation (DBDS): Code duplication to enable compiler optimizations(CGO\u201918). 126\u2013137.","DOI":"10.1145\/3168811"},{"key":"e_1_3_2_65_2","unstructured":"LLVM Project. 2018. Writing an LLVM Pass. https:\/\/releases.llvm.org\/5.0.2\/docs\/WritingAnLLVMPass.html."},{"key":"e_1_3_2_66_2","unstructured":"LLVM Project. 2021. LLVM\u2019s Analysis and Transform Passes. https:\/\/llvm.org\/docs\/Passes.html#transform-passes."},{"key":"e_1_3_2_67_2","doi-asserted-by":"publisher","DOI":"10.1109\/71.149962"},{"key":"e_1_3_2_68_2","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(OOPSLA\u201915). 695\u2013710.","DOI":"10.1145\/2858965.2814313"},{"key":"e_1_3_2_69_2","doi-asserted-by":"crossref","unstructured":"Raphael Mosaner. 2020. Machine learning to ease understanding of data driven compiler optimizations(SPLASH Companion 2020). 4\u20136.","DOI":"10.1145\/3426430.3429451"},{"key":"e_1_3_2_70_2","doi-asserted-by":"crossref","unstructured":"Todd Mytkowicz Amer Diwan Matthias Hauswirth and Peter Sweeney. 2007. Understanding measurement perturbation in trace-based data(IPDPS\u201907). 1\u20136.","DOI":"10.1109\/IPDPS.2007.370515"},{"key":"e_1_3_2_71_2","unstructured":"Tobias Nie\u00dfen Michael Dawson Panos Patros and Kenneth Kent. 2020. Insights into WebAssembly: Compilation performance and shared code caching in node.Js(CASCON\u201920). 163\u2013172."},{"key":"e_1_3_2_72_2","unstructured":"Martin Odersky and Adriaan Moors. 2009. Fighting bit rot with types (experience report: Scala collections)(LIPIcs). 427\u2013451."},{"key":"e_1_3_2_73_2","doi-asserted-by":"crossref","unstructured":"Kazunori Ogata Tamiya Onodera Kiyokuni Kawachiya Hideaki Komatsu and Toshio Nakatani. 2006. Replay compilation: Improving debuggability of a just-in-time compiler(OOPSLA\u201906). 241\u2013252.","DOI":"10.1145\/1167515.1167493"},{"key":"e_1_3_2_74_2","unstructured":"Oracle. 2022. GraalVM Repository at GitHub. https:\/\/github.com\/oracle\/graal."},{"key":"e_1_3_2_75_2","unstructured":"Oracle. 2022. Ideal Graph Visualizer. https:\/\/docs.oracle.com\/en\/graalvm\/enterprise\/20\/docs\/tools\/igv\/."},{"key":"e_1_3_2_76_2","unstructured":"Oracle. 2022. Java Platform Standard Edition Java Flight Recorder Runtime Guide. https:\/\/docs.oracle.com\/javacomponents\/jmc-5-4\/jfr-runtime-guide\/toc.htm."},{"key":"e_1_3_2_77_2","unstructured":"Oracle. 2022. JVMCI JDK 8 Repository at GitHub. https:\/\/github.com\/usi-dag\/graal-jvmci-8."},{"key":"e_1_3_2_78_2","unstructured":"Oracle. 2022. Oracle Developer Studio. https:\/\/www.oracle.com\/tools\/developerstudio\/."},{"key":"e_1_3_2_79_2","unstructured":"Michael Paleczny Christopher Vick and Cliff Click. 2001. The Java Hotspot server compiler(JVM\u201901). 1\u201313."},{"key":"e_1_3_2_80_2","doi-asserted-by":"crossref","unstructured":"Orion Papadakis Foivos Zakkak Nikos Foutris and Christos Kotselidis. 2020. You can\u2019t hide you can\u2019t run: A performance assessment of managed applications on a NUMA machine(MPLR\u201920). 80\u201388.","DOI":"10.1145\/3426182.3426189"},{"key":"e_1_3_2_81_2","doi-asserted-by":"publisher","DOI":"10.1017\/S0956796802004331"},{"key":"e_1_3_2_82_2","unstructured":"Adam Preuss. 2021. Implementation of Path Profiling in the Low-Level Virtual-Machine (LLVM) Compiler Infrastructure. https:\/\/llvm.org\/pubs\/2010-12-Preuss-PathProfiling.pdf."},{"key":"e_1_3_2_83_2","doi-asserted-by":"crossref","unstructured":"Aleksandar Prokopec. 2016. Pluggable scheduling for the reactor programming model(AGERE\u201916). 41\u201350.","DOI":"10.1145\/3001886.3001891"},{"key":"e_1_3_2_84_2","article-title":"Analysis of concurrent lock-free hash tries with constant-time operations","author":"Prokopec Aleksandar","year":"2017","unstructured":"Aleksandar Prokopec. 2017. Analysis of concurrent lock-free hash tries with constant-time operations. ArXiv e-prints (2017). arxiv:1712.09636.","journal-title":"ArXiv e-prints"},{"key":"e_1_3_2_85_2","doi-asserted-by":"crossref","unstructured":"Aleksandar Prokopec. 2017. Encoding the building blocks of communication(Onward! 2017). 104\u2013118.","DOI":"10.1145\/3133850.3133865"},{"key":"e_1_3_2_86_2","doi-asserted-by":"crossref","unstructured":"Aleksandar Prokopec. 2018. Cache-tries: Concurrent lock-free hash tries with constant-time operations(PPoPP\u201918). 137\u2013151.","DOI":"10.1145\/3200691.3178498"},{"key":"e_1_3_2_87_2","doi-asserted-by":"crossref","unstructured":"Aleksandar Prokopec. 2018. Efficient lock-free removing and compaction for the cache-trie data structure(Euro-Par\u201918). 575\u2013589.","DOI":"10.1007\/978-3-319-96983-1_41"},{"key":"e_1_3_2_88_2","doi-asserted-by":"crossref","unstructured":"Aleksandar Prokopec Phil Bagwell and Martin Odersky. 2013. Lock-free resizeable concurrent tries(LCPC\u201913). 156\u2013170.","DOI":"10.1007\/978-3-642-36036-7_11"},{"key":"e_1_3_2_89_2","doi-asserted-by":"crossref","unstructured":"Aleksandar Prokopec Phil Bagwell Tiark Rompf and Martin Odersky. 2011. A generic parallel collection framework(Euro-Par\u201911). 136\u2013147.","DOI":"10.1007\/978-3-642-23397-5_14"},{"key":"e_1_3_2_90_2","doi-asserted-by":"crossref","unstructured":"Aleksandar Prokopec Nathan Grasso Bronson Phil Bagwell and Martin Odersky. 2012. Concurrent tries with efficient non-blocking snapshots(PPoPP\u201912). 151\u2013160.","DOI":"10.1145\/2370036.2145836"},{"key":"e_1_3_2_91_2","doi-asserted-by":"crossref","unstructured":"Aleksandar Prokopec Gilles Duboscq David Leopoldseder and Thomas W\u00fcrthinger. 2019. An optimization-driven incremental inline substitution algorithm for just-in-time compilers(CGO\u201919). 164\u2013179.","DOI":"10.1109\/CGO.2019.8661171"},{"key":"e_1_3_2_92_2","doi-asserted-by":"crossref","unstructured":"Aleksandar Prokopec David Leopoldseder Gilles Duboscq and Thomas W\u00fcrthinger. 2017. Making collection operations optimal with aggressive JIT compilation(SCALA\u201917). 29\u201340.","DOI":"10.1145\/3136000.3136002"},{"key":"e_1_3_2_93_2","doi-asserted-by":"crossref","unstructured":"Aleksandar Prokopec and Martin Odersky. 2015. Isolates channels and event streams for composable distributed programming(Onward!\u201915). 171\u2013182.","DOI":"10.1145\/2814228.2814245"},{"key":"e_1_3_2_94_2","doi-asserted-by":"crossref","unstructured":"Aleksandar Prokopec Andrea Ros\u00e0 David Leopoldseder Gilles Duboscq Petr T\u016fma Martin Studener Lubom\u00edr Bulej Yudi Zheng Alex Villaz\u00f3n Doug Simon Thomas W\u00fcrthinger and Walter Binder. 2019. Renaissance: Benchmarking suite for parallel applications on the JVM(PLDI\u201919). 31\u201347.","DOI":"10.1145\/3325986"},{"key":"e_1_3_2_95_2","doi-asserted-by":"crossref","unstructured":"Aleksandar Prokopec Andrea Ros\u00e0 David Leopoldseder Gilles Duboscq Petr T\u016fma Martin Studener Lubom\u00edr Bulej Yudi Zheng Alex Villaz\u00f3n Doug Simon Thomas W\u00fcrthinger and Walter Binder. 2019. Renaissance: A modern benchmark suite for parallel applications on the JVM(SPLASH Companion\u201919). 11\u201312.","DOI":"10.1145\/3325986"},{"key":"e_1_3_2_96_2","article-title":"On evaluating the renaissance benchmarking suite: Variety, performance, and complexity","volume":"1903","author":"Prokopec Aleksandar","year":"2019","unstructured":"Aleksandar Prokopec, Andrea Ros\u00e0, David Leopoldseder, Gilles Duboscq, Petr Tuma, Martin Studener, Lubom\u00edr Bulej, Yudi Zheng, Alex Villaz\u00f3n, Doug Simon, Thomas W\u00fcrthinger, and Walter Binder. 2019. On evaluating the renaissance benchmarking suite: Variety, performance, and complexity. CoRR abs\/1903.10267 (2019).","journal-title":"CoRR"},{"key":"e_1_3_2_97_2","doi-asserted-by":"publisher","DOI":"10.1016\/j.jvlc.2018.10.007"},{"key":"e_1_3_2_98_2","doi-asserted-by":"crossref","unstructured":"Andrea Ros\u00e0 Eduardo Rosales and Walter Binder. 2017. Accurate reification of complete supertype information for dynamic analysis on the JVM(GPCE\u201917). 1\u201313.","DOI":"10.1145\/3136040.3136061"},{"key":"e_1_3_2_99_2","doi-asserted-by":"crossref","unstructured":"Andrea Ros\u00e0 Eduardo Rosales and Walter Binder. 2018. Analyzing and optimizing task granularity on the JVM(CGO\u201918). 27\u201337.","DOI":"10.1145\/3168828"},{"key":"e_1_3_2_100_2","doi-asserted-by":"publisher","DOI":"10.1145\/3338497"},{"key":"e_1_3_2_101_2","doi-asserted-by":"publisher","DOI":"10.22152\/programming-journal.org\/2023\/7\/10"},{"key":"e_1_3_2_102_2","doi-asserted-by":"crossref","unstructured":"Kenneth Russell and David Detlefs. 2006. Eliminating synchronization-related atomic operations with biased locking and bulk rebiasing(OOPSLA\u201906). 263\u2013272.","DOI":"10.1145\/1167515.1167496"},{"key":"e_1_3_2_103_2","doi-asserted-by":"publisher","DOI":"10.1145\/3154502"},{"key":"e_1_3_2_104_2","doi-asserted-by":"publisher","DOI":"10.1145\/359810.359830"},{"key":"e_1_3_2_105_2","unstructured":"Konstantin Serebryany Derek Bruening Alexander Potapenko and Dmitry Vyukov. 2012. AddressSanitizer: A fast address sanity checker(USENIX ATC\u201912). 1\u201328."},{"key":"e_1_3_2_106_2","doi-asserted-by":"crossref","unstructured":"Konstantin Serebryany and Timur Iskhodzhanov. 2009. ThreadSanitizer: Data race detection in practice(WBIA\u201909). 62\u201371.","DOI":"10.1145\/1791194.1791203"},{"key":"e_1_3_2_107_2","doi-asserted-by":"crossref","unstructured":"Konstantin Serebryany Alexander Potapenko Timur Iskhodzhanov and Dmitriy Vyukov. 2012. Dynamic race detection with LLVM compiler(RV\u201911). 110\u2013114.","DOI":"10.1007\/978-3-642-29860-8_9"},{"key":"e_1_3_2_108_2","unstructured":"Jaroslav Sevcik. 2016. Turbofan IR. https:\/\/docs.google.com\/presentation\/d\/1Z9iIHojKDrXvZ27gRX51UxHD-bKf1QcPzSijntpMJBM\/edit#slide=id.p."},{"key":"e_1_3_2_109_2","doi-asserted-by":"publisher","DOI":"10.1145\/2764907"},{"key":"e_1_3_2_110_2","doi-asserted-by":"crossref","unstructured":"Lukas Stadler Gilles Duboscq Hanspeter M\u00f6ssenb\u00f6ck Thomas W\u00fcrthinger and Doug Simon. 2013. An experimental study of the influence of dynamic compiler optimizations on scala performance(SCALA\u201913). 9:1\u20139:8.","DOI":"10.1145\/2489837.2489846"},{"key":"e_1_3_2_111_2","doi-asserted-by":"crossref","unstructured":"Lukas Stadler Thomas W\u00fcrthinger and Hanspeter M\u00f6ssenb\u00f6ck. 2014. Partial escape analysis and scalar replacement for Java(CGO\u201914). 165\u2013174.","DOI":"10.1145\/2581122.2544157"},{"key":"e_1_3_2_112_2","unstructured":"Steve Blackburn. 2018. DaCapo Issue 68. http:\/\/sf.net\/p\/dacapobench\/bugs\/68\/."},{"key":"e_1_3_2_113_2","unstructured":"Steve Blackburn. 2020. DaCapo Issue 70. http:\/\/sf.net\/p\/dacapobench\/bugs\/70\/."},{"key":"e_1_3_2_114_2","doi-asserted-by":"publisher","DOI":"10.1109\/TC.2007.70817"},{"key":"e_1_3_2_115_2","doi-asserted-by":"publisher","DOI":"10.1145\/1543135.1542526"},{"key":"e_1_3_2_116_2","doi-asserted-by":"crossref","unstructured":"Ronny Tsch\u00fcter Johannes Ziegenbalg Bert Wesarg Matthias Weber Christian Herold Sebastian D\u00f6bel and Ronny Brendel. 2017. An LLVM instrumentation plug-in for score-P(LLVM-HPC\u201917). 2:1\u20132:8.","DOI":"10.1145\/3148173.3148187"},{"key":"e_1_3_2_117_2","doi-asserted-by":"publisher","DOI":"10.1145\/390010.808261"},{"key":"e_1_3_2_118_2","doi-asserted-by":"publisher","DOI":"10.1145\/103135.103136"},{"key":"e_1_3_2_119_2","doi-asserted-by":"crossref","unstructured":"Matthew Edwin Weingarten Theodoros Theodoridis and Aleksandar Prokopec. 2022. Inlining-benefit prediction with interprocedural partial escape analysis(VMIL\u201922). 13\u201324.","DOI":"10.1145\/3563838.3567677"},{"key":"e_1_3_2_120_2","doi-asserted-by":"publisher","DOI":"10.1145\/3360610"},{"key":"e_1_3_2_121_2","doi-asserted-by":"crossref","unstructured":"Thomas W\u00fcrthinger. 2014. Graal and Truffle: Modularity and separation of concerns as cornerstones for building a multipurpose runtime(MODULARITY\u201914). 3\u20134.","DOI":"10.1145\/2584469.2584663"},{"key":"e_1_3_2_122_2","doi-asserted-by":"crossref","unstructured":"Thomas W\u00fcrthinger Christian Wimmer and Hanspeter M\u00f6ssenb\u00f6ck. 2008. Visualization of program dependence graphs(CC\u201908). 193\u2013196.","DOI":"10.1007\/978-3-540-78791-4_13"},{"key":"e_1_3_2_123_2","doi-asserted-by":"publisher","DOI":"10.1145\/2934664"},{"key":"e_1_3_2_124_2","doi-asserted-by":"crossref","unstructured":"Peng Zhao and Jos\u00e9 Nelson Amaral. 2004. To inline or not to inline? Enhanced inlining decisions(LCPC\u201904). 405\u2013419.","DOI":"10.1007\/978-3-540-24644-2_26"},{"key":"e_1_3_2_125_2","unstructured":"Yudi Zheng. 2017. Observable Dynamic Compilation (Doctoral dissertation). 1\u2013111."},{"key":"e_1_3_2_126_2","doi-asserted-by":"crossref","unstructured":"Yudi Zheng Lubom\u00edr Bulej and Walter Binder. 2015. Accurate profiling in the presence of dynamic compilation(OOPSLA\u201915). 433\u2013450.","DOI":"10.1145\/2858965.2814281"},{"key":"e_1_3_2_127_2","series-title":"LIPIcs","volume-title":"ECOOP\u201917","author":"Zheng Yudi","year":"2017","unstructured":"Yudi Zheng, Lubom\u00edr Bulej, and Walter Binder. 2017. An empirical study on deoptimization in the Graal compiler. In ECOOP\u201917(LIPIcs, Vol. 74). 30:1\u201330:30."},{"key":"e_1_3_2_128_2","doi-asserted-by":"crossref","unstructured":"Matija \u0160ipek Dino Muharemagi\u0107 Branko Mihaljevi\u0107 and Aleksander Radovan. 2020. Enhancing performance of cloud-based software applications with GraalVM and Quarkus(MIPRO\u201920). 1746\u20131751.","DOI":"10.23919\/MIPRO48935.2020.9245290"}],"container-title":["ACM Transactions on Programming Languages and Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3591473","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3591473","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T22:48:47Z","timestamp":1750286927000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3591473"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2023,6,26]]},"references-count":127,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2023,6,30]]}},"alternative-id":["10.1145\/3591473"],"URL":"https:\/\/doi.org\/10.1145\/3591473","relation":{},"ISSN":["0164-0925","1558-4593"],"issn-type":[{"value":"0164-0925","type":"print"},{"value":"1558-4593","type":"electronic"}],"subject":[],"published":{"date-parts":[[2023,6,26]]},"assertion":[{"value":"2022-01-17","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2023-03-08","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2023-06-26","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}