{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,27]],"date-time":"2026-02-27T03:48:12Z","timestamp":1772164092123,"version":"3.50.1"},"publisher-location":"New York, NY, USA","reference-count":62,"publisher":"ACM","license":[{"start":{"date-parts":[[2017,6,14]],"date-time":"2017-06-14T00:00:00Z","timestamp":1497398400000},"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":[],"published-print":{"date-parts":[[2017,6,14]]},"DOI":"10.1145\/3062341.3062381","type":"proceedings-article","created":{"date-parts":[[2017,6,14]],"date-time":"2017-06-14T10:01:04Z","timestamp":1497434464000},"page":"662-676","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":67,"title":["Practical partial evaluation for high-performance dynamic language runtimes"],"prefix":"10.1145","author":[{"given":"Thomas","family":"W\u00fcrthinger","sequence":"first","affiliation":[{"name":"Oracle Labs, Switzerland"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Christian","family":"Wimmer","sequence":"additional","affiliation":[{"name":"Oracle Labs, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Christian","family":"Humer","sequence":"additional","affiliation":[{"name":"Oracle Labs, Switzerland"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Andreas","family":"W\u00f6\u00df","sequence":"additional","affiliation":[{"name":"Oracle Labs, Austria"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Lukas","family":"Stadler","sequence":"additional","affiliation":[{"name":"Oracle Labs, Austria"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Chris","family":"Seaton","sequence":"additional","affiliation":[{"name":"Oracle Labs, UK"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Gilles","family":"Duboscq","sequence":"additional","affiliation":[{"name":"Oracle Labs, Switzerland"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Doug","family":"Simon","sequence":"additional","affiliation":[{"name":"Oracle Labs, Switzerland"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Matthias","family":"Grimmer","sequence":"additional","affiliation":[{"name":"JKU Linz, Austria"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2017,6,14]]},"reference":[{"key":"e_1_3_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/568173.568179"},{"key":"e_1_3_2_1_2_1","volume-title":"Sun Microsystems","author":"Agesen O.","year":"2000","unstructured":"O. Agesen and D. Detlefs . Mixed-mode bytecode execution. Technical report , Sun Microsystems , Inc ., 2000 . O. Agesen and D. Detlefs. Mixed-mode bytecode execution. Technical report, Sun Microsystems, Inc., 2000."},{"key":"e_1_3_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1147\/sj.442.0399"},{"key":"e_1_3_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/353171.353175"},{"key":"e_1_3_2_1_5_1","volume-title":"Zero and Shark: a zero-assembly port of Open-JDK","author":"Benson G.","year":"2009","unstructured":"G. Benson . Zero and Shark: a zero-assembly port of Open-JDK , 2009 . G. Benson. Zero and Shark: a zero-assembly port of Open-JDK, 2009."},{"key":"e_1_3_2_1_6_1","volume-title":"Proceedings of the Workshop on Dynamic Languages and Applications","author":"Bolz C. F.","year":"2007","unstructured":"C. F. Bolz and A. Rigo . How to not write virtual machines for dynamic languages . In Proceedings of the Workshop on Dynamic Languages and Applications , 2007 . C. F. Bolz and A. Rigo. How to not write virtual machines for dynamic languages. In Proceedings of the Workshop on Dynamic Languages and Applications, 2007."},{"key":"e_1_3_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2013.02.001"},{"key":"e_1_3_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/1565824.1565827"},{"key":"e_1_3_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-12592-8_12"},{"key":"e_1_3_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/2069172.2069181"},{"key":"e_1_3_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-11970-5_4"},{"key":"e_1_3_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/2983990.2984001"},{"key":"e_1_3_2_1_13_1","volume-title":"Proceedings of the Asia-Pacific Programming Languages and Compilers Workshop","author":"Duboscq G.","year":"2013","unstructured":"G. Duboscq , L. Stadler , T. W\u00fcrthinger , D. Simon , C. Wimmer , and H. M\u00f6ssenb\u00f6ck . Graal IR: An extensible declarative intermediate representation . In Proceedings of the Asia-Pacific Programming Languages and Compilers Workshop , 2013 . G. Duboscq, L. Stadler, T. W\u00fcrthinger, D. Simon, C. Wimmer, and H. M\u00f6ssenb\u00f6ck. Graal IR: An extensible declarative intermediate representation. In Proceedings of the Asia-Pacific Programming Languages and Compilers Workshop, 2013."},{"key":"e_1_3_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2542142.2542143"},{"issue":"5","key":"e_1_3_2_1_15_1","first-page":"721","article-title":"Partial evaluation of computation process\u2013an approach to a compiler-compiler. Systems, Computers","volume":"2","author":"Futamura Y.","year":"1971","unstructured":"Y. Futamura . Partial evaluation of computation process\u2013an approach to a compiler-compiler. Systems, Computers , Controls , 2 ( 5 ): 721 \u2013 728 , 1971 . Y. Futamura. Partial evaluation of computation process\u2013an approach to a compiler-compiler. Systems, Computers, Controls, 2(5):721\u2013728, 1971.","journal-title":"Controls"},{"key":"e_1_3_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/1735997.1736006"},{"key":"e_1_3_2_1_17_1","volume-title":"Graal multi-language VM","year":"2016","unstructured":"GitHub. Graal multi-language VM , 2016 . GitHub. Graal multi-language VM, 2016."},{"key":"e_1_3_2_1_18_1","volume-title":"The computer language benchmarks game","author":"Gouy I.","year":"2016","unstructured":"I. Gouy . The computer language benchmarks game , 2016 . I. Gouy. The computer language benchmarks game, 2016."},{"key":"e_1_3_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/2647508.2647528"},{"key":"e_1_3_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/2786558.2786565"},{"key":"e_1_3_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/2816707.2816714"},{"key":"e_1_3_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/2724525.2728790"},{"key":"e_1_3_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/191080.191116"},{"key":"e_1_3_2_1_24_1","first-page":"38","volume-title":"Proceedings of the European Conference on Object-Oriented Programming","author":"H\u00f6lzle U.","unstructured":"U. H\u00f6lzle , C. Chambers , and D. Ungar . Optimizing dynamically-typed object-oriented languages with polymorphic inline caches . In Proceedings of the European Conference on Object-Oriented Programming , pages 21\u2013 38 . Springer-Verlag, 1991. U. H\u00f6lzle, C. Chambers, and D. Ungar. Optimizing dynamically-typed object-oriented languages with polymorphic inline caches. In Proceedings of the European Conference on Object-Oriented Programming, pages 21\u201338. Springer-Verlag, 1991."},{"key":"e_1_3_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/143095.143114"},{"key":"e_1_3_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/2658761.2658776"},{"key":"e_1_3_2_1_27_1","series-title":"Lecture Notes in Computer Science","first-page":"31","volume-title":"Generative Programming and Component Engineering","author":"Jones N. D.","unstructured":"N. D. Jones and A. J. Glenstrup . Program generation, termination, and binding-time analysis . In Generative Programming and Component Engineering , volume 2487 of Lecture Notes in Computer Science , pages 1\u2013 31 . Springer-Verlag, 2002. N. D. Jones and A. J. Glenstrup. Program generation, termination, and binding-time analysis. In Generative Programming and Component Engineering, volume 2487 of Lecture Notes in Computer Science, pages 1\u201331. Springer-Verlag, 2002."},{"key":"e_1_3_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2007.34"},{"key":"e_1_3_2_1_29_1","first-page":"86","volume-title":"Proceedings of the International Symposium on Code Generation and Optimization","author":"Lattner C.","unstructured":"C. Lattner and V. Adve . LLVM: A compilation framework for lifelong program analysis &amp; transformation . In Proceedings of the International Symposium on Code Generation and Optimization , pages 75\u2013 86 . IEEE Computer Society, 2004. C. Lattner and V. Adve. LLVM: A compilation framework for lifelong program analysis &amp; transformation. In Proceedings of the International Symposium on Code Generation and Optimization, pages 75\u201386. IEEE Computer Society, 2004."},{"key":"e_1_3_2_1_30_1","unstructured":"MacRuby. MacRuby 2013.  MacRuby. MacRuby 2013."},{"key":"e_1_3_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/2989225.2989232"},{"key":"e_1_3_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF03037261"},{"key":"e_1_3_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-31057-7_6"},{"key":"e_1_3_2_1_34_1","volume-title":"So you want to optimize Ruby","author":"Nutter C.","year":"2012","unstructured":"C. Nutter . So you want to optimize Ruby , 2012 . C. Nutter. So you want to optimize Ruby, 2012."},{"key":"e_1_3_2_1_35_1","volume-title":"Optcarrot: A NES emulator for Ruby benchmark","year":"2016","unstructured":"Optcarrot. Optcarrot: A NES emulator for Ruby benchmark , 2016 . Optcarrot. Optcarrot: A NES emulator for Ruby benchmark, 2016."},{"key":"e_1_3_2_1_36_1","volume-title":"Oracle Labs GraalVM downloads","year":"2016","unstructured":"Oracle. Oracle Labs GraalVM downloads , 2016 . Oracle. Oracle Labs GraalVM downloads, 2016."},{"key":"e_1_3_2_1_37_1","first-page":"12","volume-title":"Proceedings of the Java Virtual Machine Research and Technology Symposium","author":"Paleczny M.","unstructured":"M. Paleczny , C. Vick , and C. Click . The Java HotSpot TM server compiler . In Proceedings of the Java Virtual Machine Research and Technology Symposium , pages 1\u2013 12 . USENIX, 2001. M. Paleczny, C. Vick, and C. Click. The Java HotSpot TM server compiler. In Proceedings of the Java Virtual Machine Research and Technology Symposium, pages 1\u201312. USENIX, 2001."},{"key":"e_1_3_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/2998415.2998416"},{"key":"e_1_3_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/1176617.1176753"},{"key":"e_1_3_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/2594291.2594316"},{"key":"e_1_3_2_1_41_1","volume-title":"Rubinius: Use Ruby","year":"2013","unstructured":"Rubinius. Rubinius: Use Ruby , 2013 . Rubinius. Rubinius: Use Ruby, 2013."},{"key":"e_1_3_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/2807426.2807435"},{"key":"e_1_3_2_1_43_1","first-page":"390","volume-title":"Proceedings of the European Conference on Object-Oriented Programming","author":"Schultz U. P.","unstructured":"U. P. Schultz , J. L. Lawall , C. Consel , and G. Muller . Towards automatic specialization of Java programs . In Proceedings of the European Conference on Object-Oriented Programming , pages 367\u2013 390 . Springer-Verlag, 1999. U. P. Schultz, J. L. Lawall, C. Consel, and G. Muller. Towards automatic specialization of Java programs. In Proceedings of the European Conference on Object-Oriented Programming, pages 367\u2013390. Springer-Verlag, 1999."},{"key":"e_1_3_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/778559.778561"},{"key":"e_1_3_2_1_45_1","volume-title":"Workshop on Meta-Programming Techniques and Reflection","author":"Seaton C.","year":"2016","unstructured":"C. Seaton . AST specialisation and partial evaluation for easy high-performance metaprogramming . In Workshop on Meta-Programming Techniques and Reflection , 2016 . C. Seaton. AST specialisation and partial evaluation for easy high-performance metaprogramming. In Workshop on Meta-Programming Techniques and Reflection, 2016."},{"key":"e_1_3_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/2617548.2617550"},{"key":"e_1_3_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/2048066.2048098"},{"key":"e_1_3_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/1328195.1328197"},{"key":"e_1_3_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/2764907"},{"key":"e_1_3_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/1596655.1596679"},{"key":"e_1_3_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/1852761.1852765"},{"key":"e_1_3_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/2581122.2544157"},{"key":"e_1_3_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/2989225.2989236"},{"key":"e_1_3_2_1_54_1","volume-title":"Official ecmascript conformance test suite","year":"2016","unstructured":"TC39. Official ecmascript conformance test suite , 2016 . TC39. Official ecmascript conformance test suite, 2016."},{"key":"e_1_3_2_1_55_1","volume-title":"unladen-swallow","author":"Swallow Unladen","year":"2009","unstructured":"Unladen Swallow . unladen-swallow , 2009 . Unladen Swallow. unladen-swallow, 2009."},{"key":"e_1_3_2_1_56_1","unstructured":"S. Urbanek. R benchmarks 2.5 2008.  S. Urbanek. R benchmarks 2.5 2008."},{"key":"e_1_3_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/2843915.2843917"},{"key":"e_1_3_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/2400682.2400689"},{"key":"e_1_3_2_1_59_1","doi-asserted-by":"publisher","DOI":"10.1145\/3033019.3033025"},{"key":"e_1_3_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/2647508.2647517"},{"key":"e_1_3_2_1_61_1","doi-asserted-by":"publisher","DOI":"10.1145\/2509578.2509581"},{"key":"e_1_3_2_1_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/2660193.2660223"}],"event":{"name":"PLDI '17: ACM SIGPLAN Conference on Programming Language Design and Implementation","location":"Barcelona Spain","acronym":"PLDI '17","sponsor":["SIGPLAN ACM Special Interest Group on Programming Languages"]},"container-title":["Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation"],"original-title":[],"link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3062341.3062381","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3062341.3062381","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T23:36:32Z","timestamp":1750203392000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3062341.3062381"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2017,6,14]]},"references-count":62,"alternative-id":["10.1145\/3062341.3062381","10.1145\/3062341"],"URL":"https:\/\/doi.org\/10.1145\/3062341.3062381","relation":{"is-identical-to":[{"id-type":"doi","id":"10.1145\/3140587.3062381","asserted-by":"object"}]},"subject":[],"published":{"date-parts":[[2017,6,14]]},"assertion":[{"value":"2017-06-14","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}