{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,4]],"date-time":"2026-02-04T22:26:14Z","timestamp":1770243974351,"version":"3.49.0"},"reference-count":41,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA2","license":[{"start":{"date-parts":[[2024,10,8]],"date-time":"2024-10-08T00:00:00Z","timestamp":1728345600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/501100001809","name":"National Natural Science Foundation of China","doi-asserted-by":"publisher","award":["62272434"],"award-info":[{"award-number":["62272434"]}],"id":[{"id":"10.13039\/501100001809","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2024,10,8]]},"abstract":"<jats:p>Escape analysis plays a crucial role in garbage-collected languages as it enables the allocation of non-escaping variables on the stack by identifying the dynamic lifetimes of objects and pointers. This helps in reducing heap allocations and alleviating garbage collection pressure. However, Go, as a garbage-collected language, employs a fast yet conservative escape analysis, which is field-insensitive and omits point-to-set calculation to expedite compilation. This results in more variables being allocated on the heap. Empirical statistics reveal that field access and indirect memory access are prevalent in real-world Go programs, suggesting potential opportunities for escape analysis to enhance program performance.<\/jats:p>\n                  <jats:p>\n                    In this paper, we propose MEA\n                    <jats:sup>2<\/jats:sup>\n                    , an escape analysis framework atop GoLLVM (an LLVM-based Go compiler), which combines field sensitivity and points-to analysis. Moreover, a novel generic function summary representation is designed to facilitate fast inter-procedural analysis. We evaluated it by using MEA\n                    <jats:sup>2<\/jats:sup>\n                    to perform stack allocation in 12 wildly-use open-source projects. The results show that, compared to Go\u2019s escape analysis, MEA\n                    <jats:sup>2<\/jats:sup>\n                    can reduce heap allocation sites by\n                    <jats:inline-formula>\n                      <mml:math xmlns:mml=\"http:\/\/www.w3.org\/1998\/Math\/MathML\" display=\"inline\" overflow=\"scroll\">\n                        <mml:mn>7.9<\/mml:mn>\n                        <mml:mo>%<\/mml:mo>\n                      <\/mml:math>\n                    <\/jats:inline-formula>\n                    on average (up to\n                    <jats:inline-formula>\n                      <mml:math xmlns:mml=\"http:\/\/www.w3.org\/1998\/Math\/MathML\" display=\"inline\" overflow=\"scroll\">\n                        <mml:mn>25.7<\/mml:mn>\n                        <mml:mo>%<\/mml:mo>\n                      <\/mml:math>\n                    <\/jats:inline-formula>\n                    ) while reducing the dynamic memory allocation size by\n                    <jats:inline-formula>\n                      <mml:math xmlns:mml=\"http:\/\/www.w3.org\/1998\/Math\/MathML\" display=\"inline\" overflow=\"scroll\">\n                        <mml:mn>11.6<\/mml:mn>\n                        <mml:mo>%<\/mml:mo>\n                      <\/mml:math>\n                    <\/jats:inline-formula>\n                    on average (up to\n                    <jats:inline-formula>\n                      <mml:math xmlns:mml=\"http:\/\/www.w3.org\/1998\/Math\/MathML\" display=\"inline\" overflow=\"scroll\">\n                        <mml:mn>35.5<\/mml:mn>\n                        <mml:mo>%<\/mml:mo>\n                      <\/mml:math>\n                    <\/jats:inline-formula>\n                    ). All this is achieved while keeping the time overhead of escape analysis within\n                    <jats:inline-formula>\n                      <mml:math xmlns:mml=\"http:\/\/www.w3.org\/1998\/Math\/MathML\" display=\"inline\" overflow=\"scroll\">\n                        <mml:mn>1<\/mml:mn>\n                        <mml:mo>%<\/mml:mo>\n                      <\/mml:math>\n                    <\/jats:inline-formula>\n                    of the compilation process.\n                  <\/jats:p>","DOI":"10.1145\/3689759","type":"journal-article","created":{"date-parts":[[2024,10,8]],"date-time":"2024-10-08T03:23:04Z","timestamp":1728357784000},"page":"1362-1389","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["MEA2: A Lightweight Field-Sensitive Escape Analysis with Points-to Calculation for Golang"],"prefix":"10.1145","volume":"8","author":[{"ORCID":"https:\/\/orcid.org\/0009-0009-4208-7961","authenticated-orcid":false,"given":"Boyao","family":"Ding","sequence":"first","affiliation":[{"name":"University of Science and Technology of China, Hefei, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0002-3888-2435","authenticated-orcid":false,"given":"Qingwei","family":"Li","sequence":"additional","affiliation":[{"name":"University of Science and Technology of China, Hefei, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-6638-6442","authenticated-orcid":false,"given":"Yu","family":"Zhang","sequence":"additional","affiliation":[{"name":"University of Science and Technology of China, Hefei, China"},{"name":"Institute of Artificial Intelligence at Hefei Comprehensive National Science Center, Hefei, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0002-7709-7990","authenticated-orcid":false,"given":"Fugen","family":"Tang","sequence":"additional","affiliation":[{"name":"University of Science and Technology of China, Hefei, China"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0009-0005-7061-1178","authenticated-orcid":false,"given":"Jinbao","family":"Chen","sequence":"additional","affiliation":[{"name":"University of Science and Technology of China, Hefei, China"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2024,10,8]]},"reference":[{"key":"e_1_3_1_2_1","volume-title":"Cloud Native Programming with Golang: Develop microservice-based high performance web apps for the cloud with Go","author":"Andrawos Mina","year":"2017","unstructured":"MinaAndrawos andMartinHelmich.2017.Cloud Native Programming with Golang: Develop microservice-based high performance web apps for the cloud with Go.Packt Publishing Ltd."},{"key":"e_1_3_1_3_1","doi-asserted-by":"crossref","first-page":"84","DOI":"10.1007\/978-3-662-53413-7_5","volume-title":"Static Analysis","author":"Balatsouras George","year":"2016","unstructured":"GeorgeBalatsouras andYannisSmaragdakis.2016.Structure-Sensitive Points-To Analysis for C and C++. InStatic Analysis,XavierRival (Ed.).Springer Berlin Heidelberg,Berlin, Heidelberg,84\u2013104."},{"key":"e_1_3_1_4_1","doi-asserted-by":"crossref","unstructured":"MohamadBarbar YuleiSui andShipingChen.2021.Object Versioning for Flow-Sensitive Pointer Analysis. In2021 IEEE\/ACM International Symposium on Code Generation and Optimization (CGO).222\u2013235. https:\/\/doi.org\/10.1109\/CGO51591.2021.9370334 10.1109\/CGO51591.2021.9370334","DOI":"10.1109\/CGO51591.2021.9370334"},{"key":"e_1_3_1_5_1","doi-asserted-by":"crossref","first-page":"75","DOI":"10.1007\/978-3-540-24851-4_4","volume-title":"ECOOP 2004 \u2013 Object-Oriented Programming","author":"Beers Matthew Q.","year":"2004","unstructured":"Matthew Q.Beers,Christian H.Stork, andMichaelFranz.2004.Efficiently Verifiable Escape Analysis. InECOOP 2004 \u2013 Object-Oriented Programming,MartinOdersky (Ed.).Springer Berlin Heidelberg,Berlin, Heidelberg,75\u201395."},{"key":"e_1_3_1_6_1","doi-asserted-by":"crossref","first-page":"25","DOI":"10.1145\/268946.268949","volume-title":"Proceedings of the 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (San Diego, California, USA) (POPL\u201998)","author":"Blanchet Bruno","year":"1998","unstructured":"BrunoBlanchet.1998.Escape Analysis: Correctness Proof, Implementation and Experimental Results. InProceedings of the 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (San Diego, California, USA) (POPL\u201998).Association for Computing Machinery,New York, NY, USA,25\u201337. https:\/\/doi.org\/10.1145\/268946.268949 10.1145\/268946.268949"},{"key":"e_1_3_1_7_1","first-page":"20","volume-title":"Proceedings of the 14th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (Denver, Colorado, USA) (OOPSLA\u201999)","author":"Blanchet Bruno","year":"1999","unstructured":"BrunoBlanchet.1999.Escape Analysis for Object-Oriented Languages: Application to Java. InProceedings of the 14th ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (Denver, Colorado, USA) (OOPSLA\u201999).Association for Computing Machinery,New York, NY, USA,20\u201334. https:\/\/doi.org\/10.1145\/320384.320387 10.1145\/320384.320387"},{"issue":"6","key":"e_1_3_1_8_1","first-page":"0","article-title":"DBI-Go: Dynamic Binary Instrumentation for Pinpointing Illegal Memory References in Go Binaries","volume":"35","author":"Chen Jinbao","year":"2024","unstructured":"JinbaoChen,YuZhang,QingweiLi, andBoyaoDing.2024.DBI-Go: Dynamic Binary Instrumentation for Pinpointing Illegal Memory References in Go Binaries.Journal of Software35,6(2024),0\u20130.","journal-title":"Journal of Software"},{"key":"e_1_3_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/320384.320386"},{"key":"e_1_3_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/945885.945892"},{"key":"e_1_3_1_11_1","unstructured":"danscalesr.2022.proposal: arena: new package providing memory arenas.https:\/\/github.com\/golang\/go\/issues\/51317"},{"key":"e_1_3_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/263699.263750"},{"key":"e_1_3_1_13_1","first-page":"82","volume-title":"Compiler Construction","author":"Gay David","year":"2000","unstructured":"DavidGay andBjarneSteensgaard.2000.Fast Escape Analysis and Stack Allocation for Object-Based Programs. InCompiler Construction,David A.Watt (Ed.).Springer Berlin Heidelberg,Berlin, Heidelberg,82\u201393."},{"key":"e_1_3_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/1480881.1480911"},{"key":"e_1_3_1_15_1","doi-asserted-by":"crossref","unstructured":"BenHardekopf andCalvinLin.2011.Flow-Sensitive Pointer Analysis for Millions of Lines of Code. InInternational Symposium on Code Generation and Optimization (CGO 2011).289\u2013298. https:\/\/doi.org\/10.1109\/CGO.2011.5764696 10.1109\/CGO.2011.5764696","DOI":"10.1109\/CGO.2011.5764696"},{"key":"e_1_3_1_16_1","unstructured":"JX-Zhang98.2021.Gollvm: Some existing defects.https:\/\/github.com\/golang\/go\/issues\/45881."},{"key":"e_1_3_1_17_1","doi-asserted-by":"crossref","first-page":"111","DOI":"10.1145\/1064979.1064996","volume-title":"Proceedings of the 1st ACM\/USENIX International Conference on Virtual Execution Environments (Chicago, IL, USA) (VEE\u201905)","author":"Kotzmann Thomas","year":"2005","unstructured":"ThomasKotzmann andHanspeterM\u00f6ssenb\u00f6ck.2005.Escape Analysis in the Context of Dynamic Compilation and Deoptimization. InProceedings of the 1st ACM\/USENIX International Conference on Virtual Execution Environments (Chicago, IL, USA) (VEE\u201905).Association for Computing Machinery,New York, NY, USA,111\u2013120. https:\/\/doi.org\/10.1145\/1064979.1064996 10.1145\/1064979.1064996"},{"key":"e_1_3_1_18_1","doi-asserted-by":"crossref","unstructured":"ThomasKotzmann andHanspeterMossenbock.2007.Run-Time Support for Optimizations Based on Escape Analysis. InInternational Symposium on Code Generation and Optimization (CGO\u201907).49\u201360. https:\/\/doi.org\/10.1109\/CGO.2007.34 10.1109\/CGO.2007.34","DOI":"10.1109\/CGO.2007.34"},{"issue":"1","key":"e_1_3_1_19_1","first-page":"20","article-title":"Design and Implementation of an Escape Analysis in the Context of Safety-Critical Embedded Systems","volume":"19","author":"Lang Clemens","year":"2020","unstructured":"ClemensLang andIsabellaStilkerich.2020.Design and Implementation of an Escape Analysis in the Context of Safety-Critical Embedded Systems.ACM Trans. Embed. Comput. Syst.19,1,Article 6 (feb 2020),20pages. https:\/\/doi.org\/10.1145\/3372133 10.1145\/3372133","journal-title":"ACM Trans. Embed. Comput. Syst."},{"key":"e_1_3_1_20_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2004.1281665"},{"key":"e_1_3_1_21_1","first-page":"53","volume-title":"Proceedings of the 15th International Conference on Parallel Architectures and Compilation Techniques (Seattle, Washington, USA) (PACT\u201906)","author":"Lee Kyungwoo","year":"2006","unstructured":"KyungwooLee andSamuel P.Midkiff.2006.A Two-Phase Escape Analysis for Parallel Java Programs. InProceedings of the 15th International Conference on Parallel Architectures and Compilation Techniques (Seattle, Washington, USA) (PACT\u201906).Association for Computing Machinery,New York, NY, USA,53\u201362. https:\/\/doi.org\/10.1145\/1152154.1152166 10.1145\/1152154.1152166"},{"key":"e_1_3_1_22_1","first-page":"27","volume-title":"Static Analysis","author":"Lei Yuxiang","year":"2019","unstructured":"YuxiangLei andYuleiSui.2019.Fast and Precise Handling of Positive Weight Cycles for Field-Sensitive Pointer Analysis. InStatic Analysis,Bor-Yuh EvanChang (Ed.).Springer International Publishing,Cham,27\u201347."},{"key":"e_1_3_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/1926385.1926389"},{"key":"e_1_3_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/2025113.2025160"},{"key":"e_1_3_1_25_1","unstructured":"Than McIntosh.2018.gollvm - Git at Google.https:\/\/go.googlesource.com\/gollvm\/ Online; accessed 20-Sept-2018."},{"issue":"9","key":"e_1_3_1_26_1","doi-asserted-by":"crossref","first-page":"178","DOI":"10.1145\/115866.115883","article-title":"Reference escape analysis: optimizing reference counting based on the lifetime of references","volume":"26","author":"Park Young Gil","year":"1991","unstructured":"Young GilPark andBenjaminGoldberg.1991.Reference escape analysis: optimizing reference counting based on the lifetime of references.SIGPLAN Not.26,9(may 1991),178\u2013189. https:\/\/doi.org\/10.1145\/115866.115883 10.1145\/115866.115883","journal-title":"SIGPLAN Not."},{"key":"e_1_3_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/143095.143125"},{"key":"e_1_3_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/1290520.1290524"},{"key":"e_1_3_1_29_1","doi-asserted-by":"crossref","first-page":"110","DOI":"10.1007\/978-3-540-69166-2_8","volume-title":"Static Analysis","author":"Prabhu Prakash","year":"2008","unstructured":"PrakashPrabhu andPritiShankar.2008.Field Flow Sensitive Pointer and Escape Analysis for Java Using Heap Array SSA. InStatic Analysis,Mar\u00edaAlpuente andGerm\u00e1nVidal (Eds.).Springer Berlin Heidelberg,Berlin, Heidelberg,110\u2013127."},{"key":"e_1_3_1_30_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.entcs.2005.01.026"},{"key":"e_1_3_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/379539.379553"},{"key":"e_1_3_1_32_1","unstructured":"Paul Menage SanjayGhemawat.2007.TCMalloc: Thread-Caching Malloc.http:\/\/goog-perftools.sourceforge.net\/doc\/tcmalloc.html."},{"key":"e_1_3_1_33_1","first-page":"165","volume-title":"Proceedings of Annual IEEE\/ACM International Symposium on Code Generation and Optimization (Orlando, FL, USA) (CGO\u201914)","author":"Stadler Lukas","year":"2018","unstructured":"LukasStadler,ThomasW\u00fcrthinger, andHanspeterM\u00f6ssenb\u00f6ck.2018.Partial Escape Analysis and Scalar Replacement for Java. InProceedings of Annual IEEE\/ACM International Symposium on Code Generation and Optimization (Orlando, FL, USA) (CGO\u201914).Association for Computing Machinery,New York, NY, USA,165\u2013174. https:\/\/doi.org\/10.1145\/2544137.2544157 10.1145\/2544137.2544157"},{"issue":"4","key":"e_1_3_1_34_1","first-page":"30","article-title":"The Perfect Getaway: Using Escape Analysis in Embedded Real-Time Systems","volume":"16","author":"Stilkerich Isabella","year":"2017","unstructured":"IsabellaStilkerich,ClemensLang,ChristophErhardt,ChristianBay, andMichaelStilkerich.2017.The Perfect Getaway: Using Escape Analysis in Embedded Real-Time Systems.ACM Trans. Embed. Comput. Syst.16,4,Article 99 (may 2017),30pages. https:\/\/doi.org\/10.1145\/3035542 10.1145\/3035542","journal-title":"ACM Trans. Embed. Comput. Syst."},{"key":"e_1_3_1_35_1","first-page":"11","volume-title":"Proceedings of the 16th ACM SIGPLAN\/SIGBED Conference on Languages, Compilers and Tools for Embedded Systems 2015 CD-ROM (Portland, OR, USA) (LCTES\u201915)","author":"Stilkerich Isabella","year":"2015","unstructured":"IsabellaStilkerich,ClemensLang,ChristophErhardt, andMichaelStilkerich.2015.A Practical Getaway: Applications of Escape Analysis in Embedded Real-Time Systems. InProceedings of the 16th ACM SIGPLAN\/SIGBED Conference on Languages, Compilers and Tools for Embedded Systems 2015 CD-ROM (Portland, OR, USA) (LCTES\u201915).Association for Computing Machinery,New York, NY, USA,Article 4,11pages. https:\/\/doi.org\/10.1145\/2670529.2754961 10.1145\/2670529.2754961"},{"key":"e_1_3_1_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/2892208.2892235"},{"key":"e_1_3_1_37_1","unstructured":"Ian LanceTaylor.2014.A Go frontend.https:\/\/github.com\/golang\/gofrontend"},{"key":"e_1_3_1_38_1","unstructured":"Ian LanceTaylor.2022.Definitions for the Go runtime functions.https:\/\/github.com\/golang\/gofrontend\/blob\/master\/go\/runtime.def"},{"key":"e_1_3_1_39_1","first-page":"109","volume-title":"Proceedings of the 8th International Workshop on Java Technologies for Real-Time and Embedded Systems (Prague, Czech Republic) (JTRES\u201910)","author":"Thomm Isabella","year":"2010","unstructured":"IsabellaThomm,MichaelStilkerich,ChristianWawersich, andWolfgangSchr\u00f6der-Preikschat.2010.KESO: an Open-Source Multi-JVM for Deeply Embedded Systems. InProceedings of the 8th International Workshop on Java Technologies for Real-Time and Embedded Systems (Prague, Czech Republic) (JTRES\u201910).Association for Computing Machinery, New York, NY, USA,109\u2013119. https:\/\/doi.org\/10.1145\/1850771.1850788 10.1145\/1850771.1850788"},{"key":"e_1_3_1_40_1","unstructured":"DmitryVyukov.2015.Go Escape Analysis Flaws.https:\/\/docs.google.com\/document\/d\/1CxgUBPlx9iJzkz9JWkb6tIpTe5q32QDmz8l0BouG0Cw\/edit"},{"key":"e_1_3_1_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/3377813.3381368"},{"key":"e_1_3_1_42_1","doi-asserted-by":"publisher","DOI":"10.1145\/320384.320400"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3689759","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3689759","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,2,4]],"date-time":"2026-02-04T09:14:36Z","timestamp":1770196476000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3689759"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,10,8]]},"references-count":41,"journal-issue":{"issue":"OOPSLA2","published-print":{"date-parts":[[2024,10,8]]}},"alternative-id":["10.1145\/3689759"],"URL":"https:\/\/doi.org\/10.1145\/3689759","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024,10,8]]},"assertion":[{"value":"2024-04-06","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-08-18","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2024-10-08","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}