{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,11]],"date-time":"2026-04-11T02:10:45Z","timestamp":1775873445567,"version":"3.50.1"},"reference-count":66,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2021,10,15]],"date-time":"2021-10-15T00:00:00Z","timestamp":1634256000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2021,10,20]]},"abstract":"<jats:p>Fast compilation is important when compilation occurs at runtime, such as query compilers in modern database systems and WebAssembly virtual machines in modern browsers. We present copy-and-patch, an extremely fast compilation technique that also produces good quality code. It is capable of lowering both high-level languages and low-level bytecode programs to binary code, by stitching together code from a large library of binary implementation variants. We call these binary implementations stencils because they have holes where missing values must be inserted during code generation. We show how to construct a stencil library and describe the copy-and-patch algorithm that generates optimized binary code.<\/jats:p>\n          <jats:p>We demonstrate two use cases of copy-and-patch: a compiler for a high-level C-like language intended for metaprogramming and a compiler for WebAssembly. Our high-level language compiler has negligible compilation cost: it produces code from an AST in less time than it takes to construct the AST. We have implemented an SQL database query compiler on top of this metaprogramming system and show that on TPC-H database benchmarks, copy-and-patch generates code two orders of magnitude faster than LLVM -O0 and three orders of magnitude faster than higher optimization levels. The generated code runs an order of magnitude faster than interpretation and 14% faster than LLVM -O0. Our WebAssembly compiler generates code 4.9X-6.5X faster than Liftoff, the WebAssembly baseline compiler in Google Chrome. The generated code also outperforms Liftoff's by 39%-63% on the Coremark and PolyBenchC WebAssembly benchmarks.<\/jats:p>","DOI":"10.1145\/3485513","type":"journal-article","created":{"date-parts":[[2021,10,15]],"date-time":"2021-10-15T19:18:28Z","timestamp":1634325508000},"page":"1-30","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":22,"title":["Copy-and-patch compilation: a fast compilation algorithm for high-level languages and bytecode"],"prefix":"10.1145","volume":"5","author":[{"given":"Haoran","family":"Xu","sequence":"first","affiliation":[{"name":"Stanford University, USA"}]},{"given":"Fredrik","family":"Kjolstad","sequence":"additional","affiliation":[{"name":"Stanford University, USA"}]}],"member":"320","published-online":{"date-parts":[[2021,10,15]]},"reference":[{"key":"e_1_2_2_1_1","unstructured":"Syrus Akbary. 2018. Wasmer Cranelift backend. Wasmer. https:\/\/github.com\/wasmerio\/wasmer\/tree\/master\/lib\/compiler-cranelift  Syrus Akbary. 2018. Wasmer Cranelift backend. Wasmer. https:\/\/github.com\/wasmerio\/wasmer\/tree\/master\/lib\/compiler-cranelift"},{"key":"e_1_2_2_2_1","volume-title":"Wasmer: The leading WebAssembly Runtime supporting WASI and Emscripten","author":"Akbary Syrus","year":"2018","unstructured":"Syrus Akbary , Ivan Enderlin , Mark McCaskey , Nick Lewycky , Heyang Zhou , Brandon Fish , Lachlan Sneff , and Mackenzie Clark . 2018 . Wasmer: The leading WebAssembly Runtime supporting WASI and Emscripten . Wasmer Inc . https:\/\/wasmer.io\/ Syrus Akbary, Ivan Enderlin, Mark McCaskey, Nick Lewycky, Heyang Zhou, Brandon Fish, Lachlan Sneff, and Mackenzie Clark. 2018. Wasmer: The leading WebAssembly Runtime supporting WASI and Emscripten. Wasmer Inc. https:\/\/wasmer.io\/"},{"key":"e_1_2_2_3_1","unstructured":"Bytecode Alliance. 2018. Cranelift Code Generator. Bytecode Alliance. https:\/\/github.com\/bytecodealliance\/cranelift  Bytecode Alliance. 2018. Cranelift Code Generator. Bytecode Alliance. https:\/\/github.com\/bytecodealliance\/cranelift"},{"key":"e_1_2_2_4_1","unstructured":"AutoCAD. 2018. AutoCAD Web App. AutoCAD. https:\/\/web.autocad.com\/  AutoCAD. 2018. AutoCAD Web App. AutoCAD. https:\/\/web.autocad.com\/"},{"key":"e_1_2_2_5_1","unstructured":"Clemens Backes. 2018. Liftoff: a new baseline compiler for WebAssembly in V8. Google. https:\/\/v8.dev\/blog\/liftoff  Clemens Backes. 2018. Liftoff: a new baseline compiler for WebAssembly in V8. Google. https:\/\/v8.dev\/blog\/liftoff"},{"key":"e_1_2_2_6_1","unstructured":"JF Bastien Keith Miller and Saam Barati. 2017. Assembling WebAssembly. Safari. https:\/\/webkit.org\/blog\/7691\/webassembly\/  JF Bastien Keith Miller and Saam Barati. 2017. Assembling WebAssembly. Safari. https:\/\/webkit.org\/blog\/7691\/webassembly\/"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/362248.362270"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.5555\/1247360.1247401"},{"key":"e_1_2_2_9_1","series-title":"SIAM review 59, 1","volume-title":"Julia: A fresh approach to numerical computing","author":"Bezanson Jeff","year":"2017","unstructured":"Jeff Bezanson , Alan Edelman , Stefan Karpinski , and Viral B Shah . 2017 . Julia: A fresh approach to numerical computing . SIAM review 59, 1 (2017), 65\u201398. Jeff Bezanson, Alan Edelman, Stefan Karpinski, and Viral B Shah. 2017. Julia: A fresh approach to numerical computing. SIAM review 59, 1 (2017), 65\u201398."},{"key":"e_1_2_2_10_1","volume-title":"Software and Compilers for Embedded Systems","author":"Casey Kevin","unstructured":"Kevin Casey , David Gregg , M. Anton Ertl , and Andrew Nisbet . 2003. Towards Superinstructions for Java Interpreters . In Software and Compilers for Embedded Systems , Andreas Krall (Ed.). Springer Berlin Heidelberg, Berlin , Heidelberg , 329\u2013343. isbn:978-3-540-39920-9 Kevin Casey, David Gregg, M. Anton Ertl, and Andrew Nisbet. 2003. Towards Superinstructions for Java Interpreters. In Software and Compilers for Embedded Systems, Andreas Krall (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 329\u2013343. isbn:978-3-540-39920-9"},{"key":"e_1_2_2_11_1","unstructured":"IBM Knowledge Center. 2020. Disabling the Java JIT Compiler. IBM. https:\/\/www.ibm.com\/support\/knowledgecenter\/SSYKE2_8.0.0\/com.ibm.java.vm.80.doc\/docs\/jit_disable.html  IBM Knowledge Center. 2020. Disabling the Java JIT Compiler. IBM. https:\/\/www.ibm.com\/support\/knowledgecenter\/SSYKE2_8.0.0\/com.ibm.java.vm.80.doc\/docs\/jit_disable.html"},{"key":"e_1_2_2_12_1","unstructured":"Lin Clark. 2018. Making WebAssembly even faster: Firefox\u2019s new streaming and tiering compiler. Mozilla. https:\/\/hacks.mozilla.org\/2018\/01\/making-webassembly-even-faster-firefoxs-new-streaming-and-tiering-compiler\/  Lin Clark. 2018. Making WebAssembly even faster: Firefox\u2019s new streaming and tiering compiler. Mozilla. https:\/\/hacks.mozilla.org\/2018\/01\/making-webassembly-even-faster-firefoxs-new-streaming-and-tiering-compiler\/"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/289121.289140"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/2499370.2462166"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/2666356.2594307"},{"key":"e_1_2_2_16_1","unstructured":"EEMBC. 2009. CoreMark Benchmark. EEMBC. https:\/\/www.eembc.org\/coremark\/  EEMBC. 2009. CoreMark Benchmark. EEMBC. https:\/\/www.eembc.org\/coremark\/"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/249069.231411"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/381792.195567"},{"key":"e_1_2_2_19_1","volume-title":"Proceedings of EuroForth","author":"Ertl Martin Anton","year":"2003","unstructured":"Martin Anton Ertl and David Gregg . 2003 . Implementation issues for superinstructions in Gforth . In Proceedings of EuroForth 2003. Citeseer, Herefordshire, UK, 9. Martin Anton Ertl and David Gregg. 2003. Implementation issues for superinstructions in Gforth. In Proceedings of EuroForth 2003. Citeseer, Herefordshire, UK, 9."},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1109\/P3HPC49587.2019.00013"},{"key":"e_1_2_2_21_1","unstructured":"Dimitri Fontaine. 2018. PostgreSQL 11 and Just In Time Compilation of Queries. CitusData. https:\/\/www.citusdata.com\/blog\/2018\/09\/11\/postgresql-11-just-in-time\/  Dimitri Fontaine. 2018. PostgreSQL 11 and Just In Time Compilation of Queries. CitusData. https:\/\/www.citusdata.com\/blog\/2018\/09\/11\/postgresql-11-just-in-time\/"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICASSP.1998.681704"},{"key":"e_1_2_2_23_1","volume-title":"LLVM Documentation on GHC Calling Convention. The Glasgow Haskell Team and LLVM Team. https:\/\/releases.llvm.org\/10","author":"GHC","year":"2020","unstructured":"GHC and LLVM. 2020 . LLVM Documentation on GHC Calling Convention. The Glasgow Haskell Team and LLVM Team. https:\/\/releases.llvm.org\/10 .0.0\/docs\/LangRef.html?highlight=ghc#calling-conventions GHC and LLVM. 2020. LLVM Documentation on GHC Calling Convention. The Glasgow Haskell Team and LLVM Team. https:\/\/releases.llvm.org\/10.0.0\/docs\/LangRef.html?highlight=ghc#calling-conventions"},{"key":"e_1_2_2_24_1","volume-title":"Introducing Lightbeam: An Optimising Streaming WebAssembly Compiler. Bytecode Alliance","author":"Gohman Dan","year":"2018","unstructured":"Dan Gohman . 2018 . Introducing Lightbeam: An Optimising Streaming WebAssembly Compiler. Bytecode Alliance . http:\/\/troubles.md\/posts\/lightbeam\/ Dan Gohman. 2018. Introducing Lightbeam: An Optimising Streaming WebAssembly Compiler. Bytecode Alliance. http:\/\/troubles.md\/posts\/lightbeam\/"},{"key":"e_1_2_2_25_1","unstructured":"Dan Gohman Pat Hickey Alex Crichton Andrew Brown Benjamin Bouvier and Nick Fitzgerald. 2018. WasmTime: A small and efficient runtime for WebAssembly & WASI. Bytecode Alliance. https:\/\/wasmtime.dev\/  Dan Gohman Pat Hickey Alex Crichton Andrew Brown Benjamin Bouvier and Nick Fitzgerald. 2018. WasmTime: A small and efficient runtime for WebAssembly & WASI. Bytecode Alliance. https:\/\/wasmtime.dev\/"},{"key":"e_1_2_2_26_1","unstructured":"Dan Gohman Pat Hickey Alex Crichton Andrew Brown Benjamin Bouvier and Nick Fitzgerald. 2018. WasmTime Cranelift Compiler. Bytecode Alliance. https:\/\/github.com\/bytecodealliance\/wasmtime\/tree\/main\/crates\/cranelift  Dan Gohman Pat Hickey Alex Crichton Andrew Brown Benjamin Bouvier and Nick Fitzgerald. 2018. WasmTime Cranelift Compiler. Bytecode Alliance. https:\/\/github.com\/bytecodealliance\/wasmtime\/tree\/main\/crates\/cranelift"},{"key":"e_1_2_2_27_1","unstructured":"Google. 2019. WebAssembly compilation pipeline. Google. https:\/\/v8.dev\/docs\/wasm-compilation-pipeline  Google. 2019. WebAssembly compilation pipeline. Google. https:\/\/v8.dev\/docs\/wasm-compilation-pipeline"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/359657.359660"},{"key":"e_1_2_2_29_1","unstructured":"W3C Community Group. 2017. WebAssembly 1.0 Core Specification. W3C Community Group. https:\/\/webassembly.github.io\/spec\/core\/  W3C Community Group. 2017. WebAssembly 1.0 Core Specification. W3C Community Group. https:\/\/webassembly.github.io\/spec\/core\/"},{"key":"e_1_2_2_30_1","unstructured":"W3C Community Group. 2018. https:\/\/github.com\/WebAssembly\/WASI\/blob\/main\/phases\/snapshot\/docs.md. W3C Community Group. https:\/\/github.com\/WebAssembly\/WASI\/blob\/main\/phases\/snapshot\/docs.md  W3C Community Group. 2018. https:\/\/github.com\/WebAssembly\/WASI\/blob\/main\/phases\/snapshot\/docs.md. W3C Community Group. https:\/\/github.com\/WebAssembly\/WASI\/blob\/main\/phases\/snapshot\/docs.md"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/3140587.3062363"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/944579.944588"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/3133901"},{"key":"e_1_2_2_34_1","unstructured":"Petr Kobalicek. 2014. AsmJIT - Machine code generation for C++. AsmJIT. https:\/\/github.com\/asmjit\/asmjit  Petr Kobalicek. 2014. AsmJIT - Machine code generation for C++. AsmJIT. https:\/\/github.com\/asmjit\/asmjit"},{"key":"e_1_2_2_35_1","unstructured":"Marcel Kost. 2018. PelotonDB Interpreter. PostgresSQL. https:\/\/github.com\/cmu-db\/peloton-design\/blob\/master\/bytecode_interpreter\/bytecode_interpreter.md  Marcel Kost. 2018. PelotonDB Interpreter. PostgresSQL. https:\/\/github.com\/cmu-db\/peloton-design\/blob\/master\/bytecode_interpreter\/bytecode_interpreter.md"},{"key":"e_1_2_2_36_1","volume-title":"LLVM: An Infrastructure for Multi-Stage Optimization. Master\u2019s thesis. Computer Science Dept.","author":"Lattner Chris","year":"2002","unstructured":"Chris Lattner . 2002 . LLVM: An Infrastructure for Multi-Stage Optimization. Master\u2019s thesis. Computer Science Dept. , University of Illinois at Urbana-Champaign , Urbana, IL . See http:\/\/llvm.cs.uiuc.edu. Chris Lattner. 2002. LLVM: An Infrastructure for Multi-Stage Optimization. Master\u2019s thesis. Computer Science Dept., University of Illinois at Urbana-Champaign, Urbana, IL. See http:\/\/llvm.cs.uiuc.edu."},{"key":"e_1_2_2_37_1","unstructured":"Nick Lewycky. 2018. Wasmer LLVM backend. Wasmer. https:\/\/github.com\/wasmerio\/wasmer\/tree\/master\/lib\/compiler-llvm  Nick Lewycky. 2018. Wasmer LLVM backend. Wasmer. https:\/\/github.com\/wasmerio\/wasmer\/tree\/master\/lib\/compiler-llvm"},{"key":"e_1_2_2_38_1","unstructured":"LinuxBase. 1998. ARM ELF Relocation types. LinuxBase. https:\/\/refspecs.linuxbase.org\/elf\/ARMELFA08.pdf  LinuxBase. 1998. ARM ELF Relocation types. LinuxBase. https:\/\/refspecs.linuxbase.org\/elf\/ARMELFA08.pdf"},{"key":"e_1_2_2_39_1","unstructured":"Tomofumi Yuki Louis-Noel Pouchet. 2011. PolyBenchC Benchmark. Ohio State University. https:\/\/github.com\/MatthiasJReisinger\/PolyBenchC-4.2.1  Tomofumi Yuki Louis-Noel Pouchet. 2011. PolyBenchC Benchmark. Ohio State University. https:\/\/github.com\/MatthiasJReisinger\/PolyBenchC-4.2.1"},{"key":"e_1_2_2_40_1","unstructured":"Michael Matz Jan Hubi\u010dka Andreas Jaeger and Mark Mitchell. 2020. System V Application Binary Interface. LinuxBase. https:\/\/refspecs.linuxbase.org\/elf\/x86_64-abi-0.98.pdf  Michael Matz Jan Hubi\u010dka Andreas Jaeger and Mark Mitchell. 2020. System V Application Binary Interface. LinuxBase. https:\/\/refspecs.linuxbase.org\/elf\/x86_64-abi-0.98.pdf"},{"key":"e_1_2_2_41_1","unstructured":"MemSQL. 2020. MemSQL Database. MemSQL. https:\/\/www.memsql.com  MemSQL. 2020. MemSQL Database. MemSQL. https:\/\/www.memsql.com"},{"key":"e_1_2_2_42_1","unstructured":"MemSQL. 2020. MemSQL Query Code-Generation Documentation. MemSQL. https:\/\/docs.memsql.com\/v7.1\/key-concepts-and-features\/query-processing\/code-generation\/  MemSQL. 2020. MemSQL Query Code-Generation Documentation. MemSQL. https:\/\/docs.memsql.com\/v7.1\/key-concepts-and-features\/query-processing\/code-generation\/"},{"key":"e_1_2_2_43_1","unstructured":"MemSQL. 2020. Personal communication with permission to disclose to the public. MemSQL.  MemSQL. 2020. Personal communication with permission to disclose to the public. MemSQL."},{"key":"e_1_2_2_44_1","doi-asserted-by":"publisher","DOI":"10.14778\/3151113.3151114"},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.14778\/2002938.2002940"},{"key":"e_1_2_2_46_1","unstructured":"Chris Newland. 2020. JITWatch \u2013 Log analyser \/ visualiser for Java HotSpot JIT compiler. AdoptOpenJDK. https:\/\/github.com\/AdoptOpenJDK\/jitwatch  Chris Newland. 2020. JITWatch \u2013 Log analyser \/ visualiser for Java HotSpot JIT compiler. AdoptOpenJDK. https:\/\/github.com\/AdoptOpenJDK\/jitwatch"},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","DOI":"10.5555\/857172.857250"},{"key":"e_1_2_2_48_1","unstructured":"Oracle. 2020. 64-bit SPARC relocation types. Oracle. https:\/\/docs.oracle.com\/cd\/E23824_01\/html\/819-0690\/chapter6-54839.html#chapter6-24-1  Oracle. 2020. 64-bit SPARC relocation types. Oracle. https:\/\/docs.oracle.com\/cd\/E23824_01\/html\/819-0690\/chapter6-54839.html#chapter6-24-1"},{"key":"e_1_2_2_49_1","unstructured":"Oracle. 2020. The Java HotSpot Performance Engine Architecture. Oracle. https:\/\/www.oracle.com\/java\/technologies\/whitepaper.html  Oracle. 2020. The Java HotSpot Performance Engine Architecture. Oracle. https:\/\/www.oracle.com\/java\/technologies\/whitepaper.html"},{"key":"e_1_2_2_50_1","unstructured":"Mike Pall. 1999. LuaJIT DynASM. The LuaJIT Project. https:\/\/luajit.org\/dynasm.html  Mike Pall. 1999. LuaJIT DynASM. The LuaJIT Project. https:\/\/luajit.org\/dynasm.html"},{"key":"e_1_2_2_51_1","volume-title":"Database of Databases","author":"Pavlo Andrew","unstructured":"Andrew Pavlo . 2021. Database of Databases . Carnegie Mellon Database Group . https:\/\/dbdb.io\/ Andrew Pavlo. 2021. Database of Databases. Carnegie Mellon Database Group. https:\/\/dbdb.io\/"},{"key":"e_1_2_2_52_1","volume-title":"Self-Driving Database Management Systems. In Conference on Innovative Data Systems Research. CIDR","author":"Pavlo Andrew","year":"2017","unstructured":"Andrew Pavlo , Gustavo Angulo , Joy Arulraj , Haibin Lin , Jiexi Lin , Lin Ma , Prashanth Menon , Todd Mowry , Matthew Perron , Ian Quah , Siddharth Santurkar , Anthony Tomasic , Skye Toor , Dana Van Aken , Ziqi Wang , Yingjun Wu , Ran Xian , and Tieying Zhang . 2017 . Self-Driving Database Management Systems. In Conference on Innovative Data Systems Research. CIDR , Chaminade, California, 6. Andrew Pavlo, Gustavo Angulo, Joy Arulraj, Haibin Lin, Jiexi Lin, Lin Ma, Prashanth Menon, Todd Mowry, Matthew Perron, Ian Quah, Siddharth Santurkar, Anthony Tomasic, Skye Toor, Dana Van Aken, Ziqi Wang, Yingjun Wu, Ran Xian, and Tieying Zhang. 2017. Self-Driving Database Management Systems. In Conference on Innovative Data Systems Research. CIDR, Chaminade, California, 6."},{"key":"e_1_2_2_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/277652.277743"},{"key":"e_1_2_2_54_1","unstructured":"PostgresSQL. 2020. Postgres Documentation - Why JIT. PostgresSQL. https:\/\/www.postgresql.org\/docs\/11\/jit-decision.html  PostgresSQL. 2020. Postgres Documentation - Why JIT. PostgresSQL. https:\/\/www.postgresql.org\/docs\/11\/jit-decision.html"},{"key":"e_1_2_2_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/199448.199526"},{"key":"e_1_2_2_56_1","doi-asserted-by":"publisher","DOI":"10.1145\/2185520.2185528"},{"key":"e_1_2_2_57_1","unstructured":"Andrew Scheidecker and Wanming Lin. 2020. WebAssembly Virtual Machine. WAVM. https:\/\/github.com\/WAVM\/WAVM  Andrew Scheidecker and Wanming Lin. 2020. WebAssembly Virtual Machine. WAVM. https:\/\/github.com\/WAVM\/WAVM"},{"key":"e_1_2_2_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/321607.321620"},{"key":"e_1_2_2_59_1","unstructured":"Ben Smith. 2018. Clang in WebAssembly. WAPM. https:\/\/github.com\/wapm-packages\/clang  Ben Smith. 2018. Clang in WebAssembly. WAPM. https:\/\/github.com\/wapm-packages\/clang"},{"key":"e_1_2_2_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/800179.810196"},{"key":"e_1_2_2_61_1","doi-asserted-by":"publisher","DOI":"10.1023\/A:1010078412711"},{"key":"e_1_2_2_62_1","unstructured":"TPC. 2020. TPC-H. http:\/\/www.tpc.org\/tpch\/. Accessed: 2020-11-15.  TPC. 2020. TPC-H. http:\/\/www.tpc.org\/tpch\/. Accessed: 2020-11-15."},{"key":"e_1_2_2_63_1","unstructured":"Wikipedia. 2021. Simple Sethi-Ullman Algorithm. Wikipedia. https:\/\/en.wikipedia.org\/wiki\/Sethi  Wikipedia. 2021. Simple Sethi-Ullman Algorithm. Wikipedia. https:\/\/en.wikipedia.org\/wiki\/Sethi"},{"key":"e_1_2_2_64_1","doi-asserted-by":"publisher","DOI":"10.1145\/2400682.2400689"},{"key":"e_1_2_2_65_1","unstructured":"Andy Wingo. 2020. firefox\u2019s low-latency webassembly compiler. Mozilla. https:\/\/wingolog.org\/archives\/2020\/03\/25\/firefoxs-low-latency-webassembly-compiler  Andy Wingo. 2020. firefox\u2019s low-latency webassembly compiler. Mozilla. https:\/\/wingolog.org\/archives\/2020\/03\/25\/firefoxs-low-latency-webassembly-compiler"},{"key":"e_1_2_2_66_1","unstructured":"Heyang Zhou. 2018. Wasmer Singlepass Backend. Wasmer. https:\/\/github.com\/wasmerio\/wasmer\/tree\/master\/lib\/compiler-singlepass  Heyang Zhou. 2018. Wasmer Singlepass Backend. Wasmer. https:\/\/github.com\/wasmerio\/wasmer\/tree\/master\/lib\/compiler-singlepass"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3485513","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3485513","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T20:18:40Z","timestamp":1750191520000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3485513"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,10,15]]},"references-count":66,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2021,10,20]]}},"alternative-id":["10.1145\/3485513"],"URL":"https:\/\/doi.org\/10.1145\/3485513","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2021,10,15]]},"assertion":[{"value":"2021-10-15","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}