{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,10]],"date-time":"2025-10-10T01:23:23Z","timestamp":1760059403806,"version":"build-2065373602"},"reference-count":40,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA2","funder":[{"DOI":"10.13039\/501100012166","name":"National Key R&D Program of China","doi-asserted-by":"crossref","award":["2023YFB4503804"],"award-info":[{"award-number":["2023YFB4503804"]}],"id":[{"id":"10.13039\/501100012166","id-type":"DOI","asserted-by":"crossref"}]},{"DOI":"10.13039\/501100001809","name":"National Natural Science Foundation of China","doi-asserted-by":"publisher","award":["62402210"],"award-info":[{"award-number":["62402210"]}],"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":[[2025,10,9]]},"abstract":"<jats:p>In static analysis frameworks for Java, the bytecode frontend serves as a critical component, transforming complex, stack-based Java bytecode into a more analyzable register-based, typed 3-address code representation. This transformation often significantly influences the overall performance of analysis frameworks, particularly when processing large-scale Java applications, rendering the efficiency of the bytecode frontend paramount for static analysis. However, the bytecode frontends of currently dominant Java static analysis frameworks, Soot and WALA, despite being time-tested and widely adopted, exhibit limitations in efficiency, hindering their ability to offer a better user experience.<\/jats:p>\n          <jats:p>\n            To tackle efficiency issues, we introduce a new bytecode frontend. Typically, bytecode frontends consist of two key stages: (1) translating Java bytecode to untyped 3-address code, and (2) performing type inference on this code. For 3-address code translation, we identified common patterns in bytecode that enable more efficient processing than traditional methods. For type inference, we found that traditional algorithms often include redundant computations that hinder performance. Leveraging these insights, we propose two novel approaches:\n            <jats:italic toggle=\"yes\">pattern-aware 3-address code translation<\/jats:italic>\n            and\n            <jats:italic toggle=\"yes\">pruning-based type inference<\/jats:italic>\n            , which together form our new frontend and lead to significant efficiency improvements. Besides, our approach can also generate SSA IR, enhancing its usability for various static analysis techniques.\n          <\/jats:p>\n          <jats:p>We implemented our new bytecode frontend in Tai-e, a recent state-of-the-art static analysis framework for Java, and evaluated its performance across a diverse set of Java applications. Experimental results demonstrate that our frontend significantly outperforms Soot, WALA, and SootUp (an overhaul of Soot)\u2014in terms of efficiency, being on average 14.2\u00d7, 14.5\u00d7, and 75.2\u00d7 faster than Soot, WALA, and SootUp, respectively. Moreover, additional experiments reveal that our frontend exhibits superior reliability in processing Java bytecode compared to these tools, thus providing a more robust foundation for Java static analysis.<\/jats:p>","DOI":"10.1145\/3763081","type":"journal-article","created":{"date-parts":[[2025,10,9]],"date-time":"2025-10-09T08:49:50Z","timestamp":1759999790000},"page":"867-893","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["Two Approaches to Fast Bytecode Frontend for Static Analysis"],"prefix":"10.1145","volume":"9","author":[{"ORCID":"https:\/\/orcid.org\/0009-0008-7421-5158","authenticated-orcid":false,"given":"Chenxi","family":"Li","sequence":"first","affiliation":[{"name":"Nanjing University, Nanjing, China"}]},{"ORCID":"https:\/\/orcid.org\/0009-0006-9119-055X","authenticated-orcid":false,"given":"Haoran","family":"Lin","sequence":"additional","affiliation":[{"name":"Nanjing University, Nanjing, China"}]},{"ORCID":"https:\/\/orcid.org\/0009-0009-3792-1237","authenticated-orcid":false,"given":"Tian","family":"Tan","sequence":"additional","affiliation":[{"name":"Nanjing University, Nanjing, China"}]},{"ORCID":"https:\/\/orcid.org\/0009-0009-1285-2298","authenticated-orcid":false,"given":"Yue","family":"Li","sequence":"additional","affiliation":[{"name":"Nanjing University, Nanjing, China"}]}],"member":"320","published-online":{"date-parts":[[2025,10,9]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2008.130"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/1251535.1251536"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/1449764.1449802"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/1167473.1167488"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2009.19"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/1639949.1640108"},{"key":"e_1_2_1_7_1","volume-title":"Practical improvements to the construction and destruction of static single assignment form. Softw. Pract. Exper., 28, 8","author":"Briggs Preston","year":"1998","unstructured":"Preston Briggs, Keith D. Cooper, Timothy J. Harvey, and L. Taylor Simpson. 1998. Practical improvements to the construction and destruction of static single assignment form. Softw. Pract. Exper., 28, 8 (1998), jul, 859\u2013881. issn:0038-0644"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/304065.304113"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/3453483.3454099"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/3597926.3598050"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/2970276.2970347"},{"key":"e_1_2_1_12_1","article-title":"A Simple, Fast Dominance Algorithm","author":"Cooper Keith","year":"2006","unstructured":"Keith Cooper, Timothy Harvey, and Ken Kennedy. 2006. A Simple, Fast Dominance Algorithm. Journal Abbreviation: Rice University, CS Technical Report 06-33870 Publication Title: Rice University, CS Technical Report 06-33870","journal-title":"Journal Abbreviation: Rice University, CS Technical Report 06-33870 Publication Title: Rice University, CS Technical Report 06-33870"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/115372.115320"},{"volume-title":"A Provably Correct Stackless Intermediate Representation for Java Bytecode","author":"Demange Delphine","key":"e_1_2_1_14_1","unstructured":"Delphine Demange, Thomas Jensen, and David Pichardie. 2010. A Provably Correct Stackless Intermediate Representation for Java Bytecode. In Programming Languages and Systems, Kazunori Ueda (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg. 97\u2013113. isbn:978-3-642-17164-2"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/3338112"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1002\/(SICI)1097-024X(200003)30:3<199::AID-SPE296>3.0.CO;2-2"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-45099-3_11"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1377492.1377496"},{"key":"e_1_2_1_19_1","first-page":"0","volume-title":"Sawja: Static Analysis Workshop for Java. In Formal Verification of Object-Oriented Software, Bernhard Beckert and Claude March\u00e9 (Eds.). Springer Berlin Heidelberg","author":"Hubert Laurent","year":"2011","unstructured":"Laurent Hubert, Nicolas Barr\u00e9, Fr\u00e9d\u00e9ric Besson, Delphine Demange, Thomas Jensen, Vincent Monfort, David Pichardie, and Tiphaine Turpin. 2011. Sawja: Static Analysis Workshop for Java. In Formal Verification of Object-Oriented Software, Bernhard Beckert and Claude March\u00e9 (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 92\u2013106. isbn:978-3-642-18070-5"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-031-57246-3_13"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/383043.383045"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1145\/1369396.1370017"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/3571258"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","unstructured":"Chenxi Li Haoran Lin Tian Tan and Yue Li. 2025. Two Approaches to Fast Bytecode Frontend for Static Analysis (Artifacts). https:\/\/doi.org\/10.5281\/zenodo.16923368 10.5281\/zenodo.16923368","DOI":"10.5281\/zenodo.16923368"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/3649828"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.ECOOP.2016.15"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/3460120.3484541"},{"key":"e_1_2_1_28_1","volume-title":"Java SE 8 Edition","author":"Lindholm Tim","unstructured":"Tim Lindholm, Frank Yellin, Gilad Bracha, and Alex Buckley. 2014. The Java Virtual Machine Specification, Java SE 8 Edition (1st ed.). Addison-Wesley Professional. isbn:013390590X","edition":"1"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","unstructured":"Tong Liu Zizhuang Deng Guozhu Meng Yuekang Li and Kai Chen. 2024. Demystifying RCE Vulnerabilities in LLM-Integrated Apps. 15 pages. isbn:9798400706363 https:\/\/doi.org\/10.1145\/3658644.3690338 10.1145\/3658644.3690338","DOI":"10.1145\/3658644.3690338"},{"key":"e_1_2_1_30_1","volume-title":"Schwartzbach","author":"M\u00f8ller Anders","year":"2018","unstructured":"Anders M\u00f8ller and Michael I. Schwartzbach. 2018. Static Program Analysis. Department of Computer Science, Aarhus University, http:\/\/cs.au.dk\/\u00e3moeller\/spa\/"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/3428236"},{"key":"e_1_2_1_32_1","volume-title":"Satisfiability of Inequalities in a Poset. Fundam. Inf., 28, 1,2","author":"Pratt Vaughan","year":"1996","unstructured":"Vaughan Pratt and Jerzy Tiuryn. 1996. Satisfiability of Inequalities in a Poset. Fundam. Inf., 28, 1,2 (1996), apr, 165\u2013182. issn:0169-2968"},{"key":"e_1_2_1_33_1","volume-title":"David M. Gillies, and Vatsa Santhanam.","author":"Sreedhar Vugranam C.","year":"1999","unstructured":"Vugranam C. Sreedhar, Roy Dz-Ching Ju, David M. Gillies, and Vatsa Santhanam. 1999. Translating Out of Static Single Assignment Form. In Static Analysis, Agostino Cortesi and Gilberto Fil\u00e9 (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 194\u2013210. isbn:978-3-540-48294-9"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/3411764.3445616"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1145\/3597926.3598120"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.5555\/781995.782008"},{"key":"e_1_2_1_37_1","unstructured":"WALA. 2006. Watson Libraries for Analysis."},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/3656417"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1145\/3663529.3664458"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/3510457.3513075"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3763081","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,10,9]],"date-time":"2025-10-09T17:50:31Z","timestamp":1760032231000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3763081"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,10,9]]},"references-count":40,"journal-issue":{"issue":"OOPSLA2","published-print":{"date-parts":[[2025,10,9]]}},"alternative-id":["10.1145\/3763081"],"URL":"https:\/\/doi.org\/10.1145\/3763081","relation":{},"ISSN":["2475-1421"],"issn-type":[{"type":"electronic","value":"2475-1421"}],"subject":[],"published":{"date-parts":[[2025,10,9]]},"assertion":[{"value":"2025-03-25","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-08-12","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-10-09","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}