{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,24]],"date-time":"2026-02-24T16:51:28Z","timestamp":1771951888406,"version":"3.50.1"},"reference-count":26,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2015,6,24]],"date-time":"2015-06-24T00:00:00Z","timestamp":1435104000000},"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":[[2015,7,8]]},"abstract":"<jats:p>\n            When building a compiler for a high-level language, certain intrinsic features of the language must be expressed in terms of the resulting low-level operations. Complex features are often expressed by explicitly weaving together bits of low-level IR, a process that is tedious, error prone, difficult to read, difficult to reason about, and machine dependent. In the Graal compiler for Java, we take a different approach: we use\n            <jats:italic>snippets<\/jats:italic>\n            of Java code to express semantics in a high-level, architecture-independent way. Two important restrictions make snippets feasible in practice: they are compiler specific, and they are explicitly prepared and specialized. Snippets make Graal simpler and more portable while still capable of generating machine code that can compete with other compilers of the Java HotSpot VM.\n          <\/jats:p>","DOI":"10.1145\/2764907","type":"journal-article","created":{"date-parts":[[2015,6,25]],"date-time":"2015-06-25T14:36:19Z","timestamp":1435242979000},"update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":20,"title":["Snippets"],"prefix":"10.1145","volume":"12","author":[{"given":"Doug","family":"Simon","sequence":"first","affiliation":[{"name":"Oracle Labs, Oracle Parkway, Redwood Shores, CA"}]},{"given":"Christian","family":"Wimmer","sequence":"additional","affiliation":[{"name":"Oracle Labs, Oracle Parkway, Redwood Shores, CA"}]},{"given":"Bernhard","family":"Urban","sequence":"additional","affiliation":[{"name":"Institute for System Software, Johannes Kepler University Linz, Austria"}]},{"given":"Gilles","family":"Duboscq","sequence":"additional","affiliation":[{"name":"Oracle Labs, Oracle Parkway, Redwood Shores, CA"}]},{"given":"Lukas","family":"Stadler","sequence":"additional","affiliation":[{"name":"Oracle Labs, Oracle Parkway, Redwood Shores, CA"}]},{"given":"Thomas","family":"W\u00fcrthinger","sequence":"additional","affiliation":[{"name":"Oracle Labs, Oracle Parkway, Redwood Shores, CA"}]}],"member":"320","published-online":{"date-parts":[[2015,6,24]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1147\/sj.391.0211"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/320384.320418"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/1297081.1297091"},{"key":"e_1_2_2_4_1","unstructured":"Apache Software Foundation. 2011. Dynamic Runtime Layer Virtual Machine. Retrieved from http:\/\/harmony.apache.org\/subcomponents\/drlvm\/.  Apache Software Foundation. 2011. Dynamic Runtime Layer Virtual Machine. Retrieved from http:\/\/harmony.apache.org\/subcomponents\/drlvm\/."},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/1167473.1167488"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/304065.304113"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1002\/cpe.v17:5\/6"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/115372.115320"},{"key":"e_1_2_2_10_1","volume-title":"Proceedings of the Asia-Pacific Programming Languages and Compilers Workshop.","author":"Duboscq Gilles","year":"2013","unstructured":"Gilles Duboscq , Lukas Stadler , Thomas W\u00fcrthinger , Doug Simon , Christian Wimmer , and Hanspeter M\u00f6ssenb\u00f6ck . 2013 a. Graal IR: An extensible declarative intermediate representation . In Proceedings of the Asia-Pacific Programming Languages and Compilers Workshop. Gilles Duboscq, Lukas Stadler, Thomas W\u00fcrthinger, Doug Simon, Christian Wimmer, and Hanspeter M\u00f6ssenb\u00f6ck. 2013a. Graal IR: An extensible declarative intermediate representation. In Proceedings of the Asia-Pacific Programming Languages and Compilers Workshop."},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/2542142.2542143"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/1508293.1508305"},{"key":"e_1_2_2_13_1","volume-title":"Proceedings of the Virtual Machine Research and Technology Symposium. USENIX Association, 111--125","author":"Glew Neal","year":"2004","unstructured":"Neal Glew , Spyridon Triantafyllis , Micha\u0142 Clerniak , Marsha Eng , Brian Lewis , and James Stichnoth . 2004 . LIL: An architecture-neutral language for virtual-machine stubs . In Proceedings of the Virtual Machine Research and Technology Symposium. USENIX Association, 111--125 . Neal Glew, Spyridon Triantafyllis, Micha\u0142 Clerniak, Marsha Eng, Brian Lewis, and James Stichnoth. 2004. LIL: An architecture-neutral language for virtual-machine stubs. In Proceedings of the Virtual Machine Research and Technology Symposium. USENIX Association, 111--125."},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/143095.143114"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/1369396.1370017"},{"key":"e_1_2_2_16_1","unstructured":"Bernd Mathiske. 2008. Systems Programming in the Maxine VM: How to Enable It and How to Get Around It. Retrieved from http:\/\/www.agentgroup.unimo.it\/pppj08\/invtalk1.html.  Bernd Mathiske. 2008. Systems Programming in the Maxine VM: How to Enable It and How to Get Around It. Retrieved from http:\/\/www.agentgroup.unimo.it\/pppj08\/invtalk1.html."},{"key":"e_1_2_2_17_1","unstructured":"OpenJDK 2013. Graal Project. Retrieved from http:\/\/openjdk.java.net\/projects\/graal.  OpenJDK 2013. Graal Project. Retrieved from http:\/\/openjdk.java.net\/projects\/graal."},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.scico.2004.08.007"},{"key":"e_1_2_2_19_1","volume-title":"Proceedings of the Symposium on Java Virtual Machine Research and Technology. USENIX, 1--12","author":"Paleczny Michael","year":"2001","unstructured":"Michael Paleczny , Christopher Vick , and Cliff Click . 2001 . The Java HotSpot\u2122 server compiler . In Proceedings of the Symposium on Java Virtual Machine Research and Technology. USENIX, 1--12 . Michael Paleczny, Christopher Vick, and Cliff Click. 2001. The Java HotSpot\u2122 server compiler. In Proceedings of the Symposium on Java Virtual Machine Research and Technology. USENIX, 1--12."},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/1176617.1176753"},{"key":"e_1_2_2_21_1","volume-title":"The strength of metacircular virtual machines: Jikes RVM","author":"Rogers Ian","unstructured":"Ian Rogers and Dave Grove . 2009. The strength of metacircular virtual machines: Jikes RVM . In Beautiful Architecture, Diomidis Spinellis and Georgios Gousios (Eds.). O\u2019Reilly , Chapter 10. Ian Rogers and Dave Grove. 2009. The strength of metacircular virtual machines: Jikes RVM. In Beautiful Architecture, Diomidis Spinellis and Georgios Gousios (Eds.). O\u2019Reilly, Chapter 10."},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/2048066.2048118"},{"key":"e_1_2_2_23_1","unstructured":"Doug Simon. 2009. The Maxine Project: Snippets in the Maxine VM. Retrieved from https:\/\/wikis.oracle.com\/display\/MaxineVM\/Snippets.  Doug Simon. 2009. The Maxine Project: Snippets in the Maxine VM. Retrieved from https:\/\/wikis.oracle.com\/display\/MaxineVM\/Snippets."},{"key":"e_1_2_2_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/1735997.1736005"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/1094855.1094865"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/2400682.2400689"},{"key":"e_1_2_2_27_1","doi-asserted-by":"publisher","DOI":"10.5555\/1788374.1788391"}],"container-title":["ACM Transactions on Architecture and Code Optimization"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2764907","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2764907","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T06:12:23Z","timestamp":1750227143000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2764907"}},"subtitle":["Taking the High Road to a Low Level"],"short-title":[],"issued":{"date-parts":[[2015,6,24]]},"references-count":26,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2015,7,8]]}},"alternative-id":["10.1145\/2764907"],"URL":"https:\/\/doi.org\/10.1145\/2764907","relation":{},"ISSN":["1544-3566","1544-3973"],"issn-type":[{"value":"1544-3566","type":"print"},{"value":"1544-3973","type":"electronic"}],"subject":[],"published":{"date-parts":[[2015,6,24]]},"assertion":[{"value":"2014-11-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2015-04-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2015-06-24","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}