Two Approaches to Fast Bytecode Frontend for Static Analysis
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 anal...
Uloženo v:
| Vydáno v: | Proceedings of ACM on programming languages Ročník 9; číslo OOPSLA2; s. 867 - 893 |
|---|---|
| Hlavní autoři: | , , , |
| Médium: | Journal Article |
| Jazyk: | angličtina |
| Vydáno: |
New York, NY, USA
ACM
09.10.2025
|
| Témata: | |
| ISSN: | 2475-1421, 2475-1421 |
| On-line přístup: | Získat plný text |
| Tagy: |
Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
|
| Abstract | 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. 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: pattern-aware 3-address code translation and pruning-based type inference, 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. 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)—in terms of efficiency, being on average 14.2×, 14.5×, and 75.2× 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. |
|---|---|
| AbstractList | 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. 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: pattern-aware 3-address code translation and pruning-based type inference, 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. 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)—in terms of efficiency, being on average 14.2×, 14.5×, and 75.2× 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. 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. 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: pattern-aware 3-address code translation and pruning-based type inference , 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. 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)—in terms of efficiency, being on average 14.2×, 14.5×, and 75.2× 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. |
| ArticleNumber | 303 |
| Author | Li, Chenxi Lin, Haoran Li, Yue Tan, Tian |
| Author_xml | – sequence: 1 givenname: Chenxi orcidid: 0009-0008-7421-5158 surname: Li fullname: Li, Chenxi email: 502022330024@smail.nju.edu.cn organization: Nanjing University, Nanjing, China – sequence: 2 givenname: Haoran orcidid: 0009-0006-9119-055X surname: Lin fullname: Lin, Haoran email: 201250184@smail.nju.edu.cn organization: Nanjing University, Nanjing, China – sequence: 3 givenname: Tian orcidid: 0009-0009-3792-1237 surname: Tan fullname: Tan, Tian email: tiantan@nju.edu.cn organization: Nanjing University, Nanjing, China – sequence: 4 givenname: Yue orcidid: 0009-0009-1285-2298 surname: Li fullname: Li, Yue email: yueli@nju.edu.cn organization: Nanjing University, Nanjing, China |
| BookMark | eNpNj8FLwzAYxYNMcM7h3VNunqr5liZNwEsdqwoDD85zSdKvWNmakgSk_72VTZHv8L7H-_HgXZJZ73sk5BrYHUAu7nkhOVNwRuarvBAZ5CuY_fsvyDLGT8YYaJ4rrufkYfflaTkMwRv3gZEmTysTE30cEzrfIK2C7xP2DW19oG_JpM7Rsjf7MXbxipy3Zh9xedIFea82u_Vztn19elmX28yAkJBJabhxvAFExRucTjrhpG6VtNrloFWhxWQn46zG1jKwyJnlRmChhOULcnvsdcHHGLCth9AdTBhrYPXP7vq0eyJvjqRxhz_oN_wGBNBTnQ |
| Cites_doi | 10.1145/3597926.3598050 10.1145/3510457.3513075 10.5281/zenodo.16923368 10.1145/1449764.1449802 10.1145/1639949.1640108 10.1145/1377492.1377496 10.1145/3649828 10.1145/3658644.3690338 10.1145/3411764.3445616 10.1109/MS.2008.130 10.1109/CGO.2009.19 10.1145/1369396.1370017 10.1145/1167473.1167488 10.1145/1251535.1251536 10.1145/2970276.2970347 10.1002/(SICI)1097-024X(200003)30:3<199::AID-SPE296>3.0.CO;2-2 10.1145/3663529.3664458 10.1145/383043.383045 10.1007/978-3-031-57246-3_13 10.1145/3597926.3598120 10.1145/3571258 10.1145/3428236 10.1145/3338112 10.1145/3460120.3484541 10.4230/LIPIcs.ECOOP.2016.15 10.1145/115372.115320 10.1145/304065.304113 10.5555/781995.782008 10.1007/978-3-540-45099-3_11 10.1145/3453483.3454099 10.1145/3656417 |
| ContentType | Journal Article |
| Copyright | Owner/Author |
| Copyright_xml | – notice: Owner/Author |
| DBID | AAYXX CITATION |
| DOI | 10.1145/3763081 |
| DatabaseName | CrossRef |
| DatabaseTitle | CrossRef |
| DatabaseTitleList | CrossRef |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Computer Science |
| EISSN | 2475-1421 |
| EndPage | 893 |
| ExternalDocumentID | 10_1145_3763081 3763081 |
| GrantInformation_xml | – fundername: National Key R&D Program of China grantid: 2023YFB4503804 – fundername: National Natural Science Foundation of China grantid: 62402210 funderid: https://doi.org/10.13039/501100001809 |
| GroupedDBID | AAKMM AAYFX ACM AEFXT AEJOY AIKLT AKRVB ALMA_UNASSIGNED_HOLDINGS GUFHI LHSKQ M~E OK1 ROL AAYXX CITATION |
| ID | FETCH-LOGICAL-a1561-66a3ac3d1ee83deded6c5c69f86b9c419879569fb9ccb9efb01be30b3a5e785b3 |
| ISSN | 2475-1421 |
| IngestDate | Thu Oct 16 04:38:56 EDT 2025 Mon Oct 13 16:30:15 EDT 2025 |
| IsDoiOpenAccess | true |
| IsOpenAccess | true |
| IsPeerReviewed | true |
| IsScholarly | true |
| Issue | OOPSLA2 |
| Keywords | Java Bytecode Frontend Static Analysis 3-Address Code Type Inference |
| Language | English |
| License | This work is licensed under Creative Commons Attribution International 4.0. |
| LinkModel | OpenURL |
| MergedId | FETCHMERGED-LOGICAL-a1561-66a3ac3d1ee83deded6c5c69f86b9c419879569fb9ccb9efb01be30b3a5e785b3 |
| ORCID | 0009-0006-9119-055X 0009-0009-3792-1237 0009-0008-7421-5158 0009-0009-1285-2298 |
| OpenAccessLink | https://dl.acm.org/doi/10.1145/3763081 |
| PageCount | 27 |
| ParticipantIDs | crossref_primary_10_1145_3763081 acm_primary_3763081 |
| PublicationCentury | 2000 |
| PublicationDate | 20251009 2025-10-09 |
| PublicationDateYYYYMMDD | 2025-10-09 |
| PublicationDate_xml | – month: 10 year: 2025 text: 20251009 day: 09 |
| PublicationDecade | 2020 |
| PublicationPlace | New York, NY, USA |
| PublicationPlace_xml | – name: New York, NY, USA |
| PublicationTitle | Proceedings of ACM on programming languages |
| PublicationTitleAbbrev | ACM PACMPL |
| PublicationYear | 2025 |
| Publisher | ACM |
| Publisher_xml | – name: ACM |
| References | Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck. 1991. Efficiently computing static single assignment form and the control dependence graph. ACM Trans. Program. Lang. Syst., 13, 4 (1991), oct, 451–490. issn:0164-0925 https://doi.org/10.1145/115372.115320 10.1145/115372.115320 Yue Li, Tian Tan, Yifei Zhang, and Jingling Xue. 2016. Program Tailoring: Slicing by Sequential Criteria. In 30th European Conference on Object-Oriented Programming (ECOOP 2016), Shriram Krishnamurthi and Benjamin S. Lerner (Eds.) (Leibniz International Proceedings in Informatics (LIPIcs), Vol. 56). Schloss Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl, Germany. 15:1–15:27. isbn:978-3-95977-014-9 issn:1868-8969 https://doi.org/10.4230/LIPIcs.ECOOP.2016.15 10.4230/LIPIcs.ECOOP.2016.15 Zhuohua Li, Jincheng Wang, Mingshen Sun, and John C.S. Lui. 2021. MirChecker: Detecting Bugs in Rust Programs via Static Analysis. In Proceedings of the 2021 ACM SIGSAC Conference on Computer and Communications Security (CCS ’21). Association for Computing Machinery, New York, NY, USA. 2183–2196. isbn:9781450384544 https://doi.org/10.1145/3460120.3484541 10.1145/3460120.3484541 Laurent Hubert, Nicolas Barré, Frédéric 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é (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 92–106. isbn:978-3-642-18070-5 Yichi Zhang. 2024. Detecting Code Comment Inconsistencies using LLM and Program Analysis. In Companion Proceedings of the 32nd ACM International Conference on the Foundations of Software Engineering (FSE 2024). Association for Computing Machinery, New York, NY, USA. 683–685. isbn:9798400706585 https://doi.org/10.1145/3663529.3664458 10.1145/3663529.3664458 Nathaniel Ayewah, William Pugh, David Hovemeyer, J. David Morgenthaler, and John Penix. 2008. Using Static Analysis to Find Bugs. IEEE Software, 25, 5 (2008), 22–29. https://doi.org/10.1109/MS.2008.130 10.1109/MS.2008.130 WALA. 2006. Watson Libraries for Analysis. Yuandao Cai, Peisen Yao, and Charles Zhang. 2021. Canary: practical static detection of inter-thread value-flow bugs. In Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation (PLDI 2021). Association for Computing Machinery, New York, NY, USA. 1126–1140. isbn:9781450383912 https://doi.org/10.1145/3453483.3454099 10.1145/3453483.3454099 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 Andreas Gal, Christian W. Probst, and Michael Franz. 2008. Java bytecode verification via static single assignment form. ACM Trans. Program. Lang. Syst., 30, 4 (2008), Article 21, aug, 21 pages. issn:0164-0925 https://doi.org/10.1145/1377492.1377496 10.1145/1377492.1377496 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 Martin Bravenboer and Yannis Smaragdakis. 2009. Strictly declarative specification of sophisticated points-to analyses. ACM SIGPLAN Notices, 44, 10 (2009), Oct., 243–262. issn:0362-1340, 1558-1160 https://doi.org/10.1145/1639949.1640108 10.1145/1639949.1640108 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é (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 194–210. isbn:978-3-540-48294-9 Yiu Wai Chow, Max Schäfer, and Michael Pradel. 2023. Beware of the Unexpected: Bimodal Taint Analysis. In Proceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2023). Association for Computing Machinery, New York, NY, USA. 211–222. isbn:9798400702211 https://doi.org/10.1145/3597926.3598050 10.1145/3597926.3598050 Kadiray Karakaya, Stefan Schott, Jonas Klauke, Eric Bodden, Markus Schmidt, Linghui Luo, and Dongjie He. 2024. SootUp: A Redesign of the Soot Static Analysis Framework. In Tools and Algorithms for the Construction and Analysis of Systems, Bernd Finkbeiner and Laura Kovács (Eds.). Springer Nature Switzerland, 229–247. isbn:978-3-031-57246-3 https://doi.org/10.1007/978-3-031-57246-3_13 Place: Cham 10.1007/978-3-031-57246-3_13 Anders Møller and Oskar Haarklou Veileborg. 2020. Eliminating abstraction overhead of Java stream pipelines using ahead-of-time program optimization. Proc. ACM Program. Lang., 4, OOPSLA (2020), Article 168, Nov., 29 pages. https://doi.org/10.1145/3428236 10.1145/3428236 Haonan Li, Yu Hao, Yizhuo Zhai, and Zhiyun Qian. 2024. Enhancing Static Analysis for Practical Bug Detection: An LLM-Integrated Approach. Proc. ACM Program. Lang., 8, OOPSLA1 (2024), Article 111, April, 26 pages. https://doi.org/10.1145/3649828 10.1145/3649828 Matthieu Lemerre. 2023. SSA Translation Is an Abstract Interpretation. Proceedings of the ACM on Programming Languages, 7, POPL (2023), Jan., 65:1895–65:1924. https://doi.org/10.1145/3571258 10.1145/3571258 Ben Bellamy, Pavel Avgustinov, Oege de Moor, and Damien Sereni. 2008. Efficient local type inference. In Proceedings of the 23rd ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA ’08). Association for Computing Machinery, New York, NY, USA. 475–492. isbn:9781605582153 https://doi.org/10.1145/1449764.1449802 10.1145/1449764.1449802 Todd B. Knoblock and Jakob Rehof. 2001. Type elaboration and subtype completion for Java bytecode. ACM Trans. Program. Lang. Syst., 23, 2 (2001), March, 243–272. issn:0164-0925 https://doi.org/10.1145/383043.383045 10.1145/383043.383045 Thomas Kotzmann, Christian Wimmer, Hanspeter Mössenböck, Thomas Rodriguez, Kenneth Russell, and David Cox. 2008. Design of the Java HotSpot™ client compiler for Java 6. ACM Trans. Archit. Code Optim., 5, 1 (2008), Article 7, may, 32 pages. issn:1544-3566 https://doi.org/10.1145/1369396.1370017 10.1145/1369396.1370017 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 Mohammad Tahaei, Kami Vaniea, Konstantin (Kosta) Beznosov, and Maria K Wolters. 2021. Security Notifications in Static Analysis Tools: Developers’ Attitudes, Comprehension, and Ability to Act on Them. In Proceedings of the 2021 CHI Conference on Human Factors in Computing Systems (CHI ’21). Association for Computing Machinery, New York, NY, USA. Article 691, 17 pages. isbn:9781450380966 https://doi.org/10.1145/3411764.3445616 10.1145/3411764.3445616 Stephen M. Blackburn, Robin Garner, Chris Hoffmann, Asjad M. Khang, Kathryn S. McKinley, Rotem Bentzur, Amer Diwan, Daniel Feinberg, Daniel Frampton, Samuel Z. Guyer, Martin Hirzel, Antony Hosking, Maria Jump, Han Lee, J. Eliot B. Moss, Aashish Phansalkar, Darko Stefanović, Thomas VanDrunen, Daniel von Dincklage, and Ben Wiedermann. 2006. The DaCapo benchmarks: java benchmarking development and analysis. In Proceedings of the 21st Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA ’06). Association for Computing Machinery, New York, NY, USA. 169–190. isbn:1595933484 https://doi.org/10.1145/1167473.1167488 10.1145/1167473.1167488 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–881. issn:0038-0644 Anders Møller and Michael I. Schwartzbach. 2018. Static Program Analysis. Department of Computer Science, Aarhus University, http://cs.au.dk/ãmoeller/spa Maria Christakis and Christian Bird. 2016. What developers want and need from program analysis: an empirical study. In Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering (ASE ’16). Association for Computing Machinery, 332–343. isbn:978-1-4503-3845-5 https://doi.org/10.1145/2970276.2970347 Place: New York, NY, USA 10.1145/2970276.2970347 Zexin Zhong, Jiangchao Liu, Diyu Wu, Peng Di, Yulei Sui, and Alex X. Liu. 2022. Field-based static taint analysis for industrial microservices. In Proceedings of the 44th International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP ’22). Association for Computing Machinery, New York, NY, USA. 149–150. isbn:9781450392266 https://doi.org/10.1145/3510457.3513075 10.1145/3510457.3513075 Robert Fitzgerald, Todd B. Knoblock, Erik Ruf, Bjarne Steensgaard, and David Tarditi. 2000. Marmot: an optimizing compiler for Java. Software: Practice and Experience, 30, 3 (2000), 199–232. https://doi.org/10.1002/(SICI)1097-024X(200003)30:3<199::AID-SPE296>3.0.CO;2-2 10.1002/(SICI)1097-024X(200003)30:3<199::AID-SPE296>3.0.CO;2-2 Raja Vallée-Rai, Phong Co, Etienne Gagnon, Laurie Hendren, Patrick Lam, and Vijay Sundaresan. 1999. Soot - a Java bytecode optimization framework. In Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research (CASCON ’99). IBM Press, 13. Place: Mississauga, Ontario, Canada Michael G. Burke, Jong-Deok Choi, Stephen Fink, David Grove, Michael Hind, Vivek Sarkar, Mauricio J. Serrano, V. C. Sreedhar, Harini Srinivasan, and John Whaley. 1999. The Jalapeño dynamic optimizing compiler for Java. In Proceedings of the ACM 1999 Conference on Java Grande (JAVA ’99). Association for Computing Machinery, New York, NY, USA. 129–141. isbn:1581131615 https://doi.org/10.1145/304065.304113 10.1145/304065.304113 Delphine Demange, Thomas Jensen, and David Pichardie. 2010. A Provably Correct Stackless Intermediate Representation for Java Bytecode. In Programming Languages and Systems, Kazunori Ueda Briggs Preston (e_1_2_1_7_1) 1998 Sreedhar Vugranam C. (e_1_2_1_33_1) 1999 Pratt Vaughan (e_1_2_1_32_1) 1996 e_1_2_1_20_1 e_1_2_1_40_1 e_1_2_1_23_1 e_1_2_1_24_1 e_1_2_1_21_1 Lindholm Tim (e_1_2_1_28_1) e_1_2_1_22_1 e_1_2_1_27_1 e_1_2_1_25_1 Cooper Keith (e_1_2_1_12_1) 2006 e_1_2_1_26_1 e_1_2_1_29_1 Møller Anders (e_1_2_1_30_1) 2018 Hubert Laurent (e_1_2_1_19_1) 2011 Demange Delphine (e_1_2_1_14_1) e_1_2_1_31_1 e_1_2_1_8_1 e_1_2_1_5_1 e_1_2_1_6_1 e_1_2_1_3_1 e_1_2_1_35_1 e_1_2_1_4_1 e_1_2_1_13_1 e_1_2_1_34_1 e_1_2_1_1_1 e_1_2_1_10_1 e_1_2_1_2_1 e_1_2_1_11_1 e_1_2_1_16_1 e_1_2_1_39_1 e_1_2_1_17_1 e_1_2_1_38_1 e_1_2_1_37_1 e_1_2_1_15_1 e_1_2_1_36_1 e_1_2_1_9_1 e_1_2_1_18_1 |
| References_xml | – reference: WALA. 2006. Watson Libraries for Analysis. – reference: Mohammad Tahaei, Kami Vaniea, Konstantin (Kosta) Beznosov, and Maria K Wolters. 2021. Security Notifications in Static Analysis Tools: Developers’ Attitudes, Comprehension, and Ability to Act on Them. In Proceedings of the 2021 CHI Conference on Human Factors in Computing Systems (CHI ’21). Association for Computing Machinery, New York, NY, USA. Article 691, 17 pages. isbn:9781450380966 https://doi.org/10.1145/3411764.3445616 10.1145/3411764.3445616 – reference: Yue Li, Tian Tan, Yifei Zhang, and Jingling Xue. 2016. Program Tailoring: Slicing by Sequential Criteria. In 30th European Conference on Object-Oriented Programming (ECOOP 2016), Shriram Krishnamurthi and Benjamin S. Lerner (Eds.) (Leibniz International Proceedings in Informatics (LIPIcs), Vol. 56). Schloss Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl, Germany. 15:1–15:27. isbn:978-3-95977-014-9 issn:1868-8969 https://doi.org/10.4230/LIPIcs.ECOOP.2016.15 10.4230/LIPIcs.ECOOP.2016.15 – reference: Nathaniel Ayewah, William Pugh, David Hovemeyer, J. David Morgenthaler, and John Penix. 2008. Using Static Analysis to Find Bugs. IEEE Software, 25, 5 (2008), 22–29. https://doi.org/10.1109/MS.2008.130 10.1109/MS.2008.130 – reference: Raja Vallée-Rai, Phong Co, Etienne Gagnon, Laurie Hendren, Patrick Lam, and Vijay Sundaresan. 1999. Soot - a Java bytecode optimization framework. In Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research (CASCON ’99). IBM Press, 13. Place: Mississauga, Ontario, Canada – reference: Benoit Boissinot, Alain Darte, Fabrice Rastello, Benoit Dupont de Dinechin, and Christophe Guillon. 2009. Revisiting Out-of-SSA Translation for Correctness, Code Quality and Efficiency. In Proceedings of the 7th Annual IEEE/ACM International Symposium on Code Generation and Optimization (CGO ’09). IEEE Computer Society, USA. 114–125. isbn:9780769535760 https://doi.org/10.1109/CGO.2009.19 10.1109/CGO.2009.19 – reference: Todd B. Knoblock and Jakob Rehof. 2001. Type elaboration and subtype completion for Java bytecode. ACM Trans. Program. Lang. Syst., 23, 2 (2001), March, 243–272. issn:0164-0925 https://doi.org/10.1145/383043.383045 10.1145/383043.383045 – reference: Zhuohua Li, Jincheng Wang, Mingshen Sun, and John C.S. Lui. 2021. MirChecker: Detecting Bugs in Rust Programs via Static Analysis. In Proceedings of the 2021 ACM SIGSAC Conference on Computer and Communications Security (CCS ’21). Association for Computing Machinery, New York, NY, USA. 2183–2196. isbn:9781450384544 https://doi.org/10.1145/3460120.3484541 10.1145/3460120.3484541 – reference: 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–113. isbn:978-3-642-17164-2 – reference: Etienne M. Gagnon, Laurie J. Hendren, and Guillaume Marceau. 2000. Efficient Inference of Static Types for Java Bytecode. In Static Analysis, Jens Palsberg (Ed.). Springer, Berlin, Heidelberg. 199–219. isbn:978-3-540-45099-3 https://doi.org/10.1007/978-3-540-45099-3_11 10.1007/978-3-540-45099-3_11 – reference: Michael G. Burke, Jong-Deok Choi, Stephen Fink, David Grove, Michael Hind, Vivek Sarkar, Mauricio J. Serrano, V. C. Sreedhar, Harini Srinivasan, and John Whaley. 1999. The Jalapeño dynamic optimizing compiler for Java. In Proceedings of the ACM 1999 Conference on Java Grande (JAVA ’99). Association for Computing Machinery, New York, NY, USA. 129–141. isbn:1581131615 https://doi.org/10.1145/304065.304113 10.1145/304065.304113 – reference: Yuandao Cai, Peisen Yao, and Charles Zhang. 2021. Canary: practical static detection of inter-thread value-flow bugs. In Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation (PLDI 2021). Association for Computing Machinery, New York, NY, USA. 1126–1140. isbn:9781450383912 https://doi.org/10.1145/3453483.3454099 10.1145/3453483.3454099 – reference: Laurent Hubert, Nicolas Barré, Frédéric 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é (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 92–106. isbn:978-3-642-18070-5 – reference: Christian Wimmer, Codrut Stancu, David Kozak, and Thomas Würthinger. 2024. Scaling Type-Based Points-to Analysis with Saturation. Proc. ACM Program. Lang., 8, PLDI (2024), Article 187, June, 24 pages. https://doi.org/10.1145/3656417 10.1145/3656417 – reference: 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é (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg. 194–210. isbn:978-3-540-48294-9 – reference: Robert Fitzgerald, Todd B. Knoblock, Erik Ruf, Bjarne Steensgaard, and David Tarditi. 2000. Marmot: an optimizing compiler for Java. Software: Practice and Experience, 30, 3 (2000), 199–232. https://doi.org/10.1002/(SICI)1097-024X(200003)30:3<199::AID-SPE296>3.0.CO;2-2 10.1002/(SICI)1097-024X(200003)30:3<199::AID-SPE296>3.0.CO;2-2 – reference: Yichi Zhang. 2024. Detecting Code Comment Inconsistencies using LLM and Program Analysis. In Companion Proceedings of the 32nd ACM International Conference on the Foundations of Software Engineering (FSE 2024). Association for Computing Machinery, New York, NY, USA. 683–685. isbn:9798400706585 https://doi.org/10.1145/3663529.3664458 10.1145/3663529.3664458 – reference: Zexin Zhong, Jiangchao Liu, Diyu Wu, Peng Di, Yulei Sui, and Alex X. Liu. 2022. Field-based static taint analysis for industrial microservices. In Proceedings of the 44th International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP ’22). Association for Computing Machinery, New York, NY, USA. 149–150. isbn:9781450392266 https://doi.org/10.1145/3510457.3513075 10.1145/3510457.3513075 – reference: Stephen M. Blackburn, Robin Garner, Chris Hoffmann, Asjad M. Khang, Kathryn S. McKinley, Rotem Bentzur, Amer Diwan, Daniel Feinberg, Daniel Frampton, Samuel Z. Guyer, Martin Hirzel, Antony Hosking, Maria Jump, Han Lee, J. Eliot B. Moss, Aashish Phansalkar, Darko Stefanović, Thomas VanDrunen, Daniel von Dincklage, and Ben Wiedermann. 2006. The DaCapo benchmarks: java benchmarking development and analysis. In Proceedings of the 21st Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA ’06). Association for Computing Machinery, New York, NY, USA. 169–190. isbn:1595933484 https://doi.org/10.1145/1167473.1167488 10.1145/1167473.1167488 – reference: Ben Bellamy, Pavel Avgustinov, Oege de Moor, and Damien Sereni. 2008. Efficient local type inference. In Proceedings of the 23rd ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA ’08). Association for Computing Machinery, New York, NY, USA. 475–492. isbn:9781605582153 https://doi.org/10.1145/1449764.1449802 10.1145/1449764.1449802 – reference: Kadiray Karakaya, Stefan Schott, Jonas Klauke, Eric Bodden, Markus Schmidt, Linghui Luo, and Dongjie He. 2024. SootUp: A Redesign of the Soot Static Analysis Framework. In Tools and Algorithms for the Construction and Analysis of Systems, Bernd Finkbeiner and Laura Kovács (Eds.). Springer Nature Switzerland, 229–247. isbn:978-3-031-57246-3 https://doi.org/10.1007/978-3-031-57246-3_13 Place: Cham 10.1007/978-3-031-57246-3_13 – reference: Yiu Wai Chow, Max Schäfer, and Michael Pradel. 2023. Beware of the Unexpected: Bimodal Taint Analysis. In Proceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2023). Association for Computing Machinery, New York, NY, USA. 211–222. isbn:9798400702211 https://doi.org/10.1145/3597926.3598050 10.1145/3597926.3598050 – reference: Dino Distefano, Manuel Fähndrich, Francesco Logozzo, and Peter W. O’Hearn. 2019. Scaling static analyses at Facebook. Commun. ACM, 62, 8 (2019), July, 62–70. issn:0001-0782 https://doi.org/10.1145/3338112 10.1145/3338112 – reference: 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 – reference: Martin Bravenboer and Yannis Smaragdakis. 2009. Strictly declarative specification of sophisticated points-to analyses. ACM SIGPLAN Notices, 44, 10 (2009), Oct., 243–262. issn:0362-1340, 1558-1160 https://doi.org/10.1145/1639949.1640108 10.1145/1639949.1640108 – reference: Thomas Kotzmann, Christian Wimmer, Hanspeter Mössenböck, Thomas Rodriguez, Kenneth Russell, and David Cox. 2008. Design of the Java HotSpot™ client compiler for Java 6. ACM Trans. Archit. Code Optim., 5, 1 (2008), Article 7, may, 32 pages. issn:1544-3566 https://doi.org/10.1145/1369396.1370017 10.1145/1369396.1370017 – reference: Anders Møller and Oskar Haarklou Veileborg. 2020. Eliminating abstraction overhead of Java stream pipelines using ahead-of-time program optimization. Proc. ACM Program. Lang., 4, OOPSLA (2020), Article 168, Nov., 29 pages. https://doi.org/10.1145/3428236 10.1145/3428236 – reference: Nathaniel Ayewah, William Pugh, J. David Morgenthaler, John Penix, and YuQian Zhou. 2007. Evaluating static analysis defect warnings on production software. In Proceedings of the 7th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering. ACM, San Diego California USA. 1–8. isbn:978-1-59593-595-3 https://doi.org/10.1145/1251535.1251536 10.1145/1251535.1251536 – reference: Matthieu Lemerre. 2023. SSA Translation Is an Abstract Interpretation. Proceedings of the ACM on Programming Languages, 7, POPL (2023), Jan., 65:1895–65:1924. https://doi.org/10.1145/3571258 10.1145/3571258 – reference: Vaughan Pratt and Jerzy Tiuryn. 1996. Satisfiability of Inequalities in a Poset. Fundam. Inf., 28, 1,2 (1996), apr, 165–182. issn:0169-2968 – reference: 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 – reference: Andreas Gal, Christian W. Probst, and Michael Franz. 2008. Java bytecode verification via static single assignment form. ACM Trans. Program. Lang. Syst., 30, 4 (2008), Article 21, aug, 21 pages. issn:0164-0925 https://doi.org/10.1145/1377492.1377496 10.1145/1377492.1377496 – reference: 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–881. issn:0038-0644 – reference: Maria Christakis and Christian Bird. 2016. What developers want and need from program analysis: an empirical study. In Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering (ASE ’16). Association for Computing Machinery, 332–343. isbn:978-1-4503-3845-5 https://doi.org/10.1145/2970276.2970347 Place: New York, NY, USA 10.1145/2970276.2970347 – reference: 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 – reference: Anders Møller and Michael I. Schwartzbach. 2018. Static Program Analysis. Department of Computer Science, Aarhus University, http://cs.au.dk/ãmoeller/spa/ – reference: Haonan Li, Yu Hao, Yizhuo Zhai, and Zhiyun Qian. 2024. Enhancing Static Analysis for Practical Bug Detection: An LLM-Integrated Approach. Proc. ACM Program. Lang., 8, OOPSLA1 (2024), Article 111, April, 26 pages. https://doi.org/10.1145/3649828 10.1145/3649828 – reference: Tian Tan and Yue Li. 2023. Tai-e: A Developer-Friendly Static Analysis Framework for Java by Harnessing the Good Designs of Classics. In Proceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2023). Association for Computing Machinery, 1093–1105. https://doi.org/10.1145/3597926.3598120 Place: New York, NY, USA 10.1145/3597926.3598120 – reference: Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and F. Kenneth Zadeck. 1991. Efficiently computing static single assignment form and the control dependence graph. ACM Trans. Program. Lang. Syst., 13, 4 (1991), oct, 451–490. issn:0164-0925 https://doi.org/10.1145/115372.115320 10.1145/115372.115320 – reference: 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 – ident: e_1_2_1_10_1 doi: 10.1145/3597926.3598050 – ident: e_1_2_1_40_1 doi: 10.1145/3510457.3513075 – volume-title: Java SE 8 Edition ident: e_1_2_1_28_1 – year: 2006 ident: e_1_2_1_12_1 article-title: A Simple, Fast Dominance Algorithm publication-title: Journal Abbreviation: Rice University, CS Technical Report 06-33870 Publication Title: Rice University, CS Technical Report 06-33870 – ident: e_1_2_1_24_1 doi: 10.5281/zenodo.16923368 – ident: e_1_2_1_3_1 doi: 10.1145/1449764.1449802 – ident: e_1_2_1_6_1 doi: 10.1145/1639949.1640108 – volume-title: Satisfiability of Inequalities in a Poset. Fundam. Inf., 28, 1,2 year: 1996 ident: e_1_2_1_32_1 – ident: e_1_2_1_18_1 doi: 10.1145/1377492.1377496 – ident: e_1_2_1_25_1 doi: 10.1145/3649828 – ident: e_1_2_1_29_1 doi: 10.1145/3658644.3690338 – ident: e_1_2_1_34_1 doi: 10.1145/3411764.3445616 – ident: e_1_2_1_37_1 – ident: e_1_2_1_1_1 doi: 10.1109/MS.2008.130 – ident: e_1_2_1_5_1 doi: 10.1109/CGO.2009.19 – ident: e_1_2_1_22_1 doi: 10.1145/1369396.1370017 – ident: e_1_2_1_4_1 doi: 10.1145/1167473.1167488 – ident: e_1_2_1_2_1 doi: 10.1145/1251535.1251536 – ident: e_1_2_1_11_1 doi: 10.1145/2970276.2970347 – ident: e_1_2_1_16_1 doi: 10.1002/(SICI)1097-024X(200003)30:3<199::AID-SPE296>3.0.CO;2-2 – ident: e_1_2_1_39_1 doi: 10.1145/3663529.3664458 – ident: e_1_2_1_21_1 doi: 10.1145/383043.383045 – ident: e_1_2_1_20_1 doi: 10.1007/978-3-031-57246-3_13 – volume-title: David M. Gillies, and Vatsa Santhanam. year: 1999 ident: e_1_2_1_33_1 – ident: e_1_2_1_35_1 doi: 10.1145/3597926.3598120 – ident: e_1_2_1_23_1 doi: 10.1145/3571258 – ident: e_1_2_1_31_1 doi: 10.1145/3428236 – start-page: 0 volume-title: Sawja: Static Analysis Workshop for Java. In Formal Verification of Object-Oriented Software, Bernhard Beckert and Claude Marché (Eds.). Springer Berlin Heidelberg year: 2011 ident: e_1_2_1_19_1 – ident: e_1_2_1_15_1 doi: 10.1145/3338112 – ident: e_1_2_1_27_1 doi: 10.1145/3460120.3484541 – ident: e_1_2_1_26_1 doi: 10.4230/LIPIcs.ECOOP.2016.15 – ident: e_1_2_1_13_1 doi: 10.1145/115372.115320 – volume-title: A Provably Correct Stackless Intermediate Representation for Java Bytecode ident: e_1_2_1_14_1 – ident: e_1_2_1_8_1 doi: 10.1145/304065.304113 – volume-title: Schwartzbach year: 2018 ident: e_1_2_1_30_1 – ident: e_1_2_1_36_1 doi: 10.5555/781995.782008 – volume-title: Practical improvements to the construction and destruction of static single assignment form. Softw. Pract. Exper., 28, 8 year: 1998 ident: e_1_2_1_7_1 – ident: e_1_2_1_17_1 doi: 10.1007/978-3-540-45099-3_11 – ident: e_1_2_1_9_1 doi: 10.1145/3453483.3454099 – ident: e_1_2_1_38_1 doi: 10.1145/3656417 |
| SSID | ssj0001934839 |
| Score | 2.3055243 |
| Snippet | In static analysis frameworks for Java, the bytecode frontend serves as a critical component, transforming complex, stack-based Java bytecode into a more... |
| SourceID | crossref acm |
| SourceType | Index Database Publisher |
| StartPage | 867 |
| SubjectTerms | Automated static analysis Software and its engineering |
| SubjectTermsDisplay | Software and its engineering -- Automated static analysis |
| Title | Two Approaches to Fast Bytecode Frontend for Static Analysis |
| URI | https://dl.acm.org/doi/10.1145/3763081 |
| Volume | 9 |
| hasFullText | 1 |
| inHoldings | 1 |
| isFullTextHit | |
| isPrint | |
| journalDatabaseRights | – providerCode: PRVHPJ databaseName: ROAD: Directory of Open Access Scholarly Resources customDbUrl: eissn: 2475-1421 dateEnd: 99991231 omitProxy: false ssIdentifier: ssj0001934839 issn: 2475-1421 databaseCode: M~E dateStart: 20170101 isFulltext: true titleUrlDefault: https://road.issn.org providerName: ISSN International Centre |
| link | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwtV1LT9tAEF6llEMv0FIQtBTtgVvl4uc-pF4CAnHgEQkq0RPaXY-lSMRB4EB64bcz6_XaFlQCDiiSlYyzkbXz5dvZ2XkQsm1SbkwY64CLPAvSBGSgeI5bFc6U0cbCqqibTfCTE3FxIUeDwcznwtxd8bIU87m8fldVowyVbVNn36Du9kdRgO9R6XhFteP1dYq_n1rbss6UcvUbDtRt9XP3XwU2fx1NVVuQqszrAENra45NW5qkb6qO2qWtjvYY7h3bg4UmnmtiPQze19ma5Udjd4IP5XzcyWpeO1SItS7ot2mK3MOmG_t3Bn0_RFzXLw1lR1dxylGWunznX_AfWcO3sger09PR2dEw7jGocN05_GLs2ic-5_nUlsSw5BiKqFvK_PH9kxWujTt0WdjZZTPwA_kY80xaMjx-6LnmZJKKugdd-_wu3dqO3WnGWmvGTHrWTM8sOf9Mlpr9BB06HHwhAyhXyLLv1UEb6v5KfiMsaAcLWk2phQX1sKAeFhRhQR0sqIfFKvlzsH--dxg0nTMChfvxKGBMJcokeQQgkhzwxUxmmCwE09Kk1tGE-2JZ4AejJRQ6jDQkoU5UBlxkOlkjC-W0hHVCBQsll8AgK5DvRSEBYhmlWuYFU_i33iArOA-X1642ip_ZDUL9vLS3nkz-t5e_8p186pC2SRaqmxn8IIvmrhrf3mzVSnsEuDZc9g |
| linkProvider | ISSN International Centre |
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Two+Approaches+to+Fast+Bytecode+Frontend+for+Static+Analysis&rft.jtitle=Proceedings+of+ACM+on+programming+languages&rft.au=Li%2C+Chenxi&rft.au=Lin%2C+Haoran&rft.au=Tan%2C+Tian&rft.au=Li%2C+Yue&rft.date=2025-10-09&rft.issn=2475-1421&rft.eissn=2475-1421&rft.volume=9&rft.issue=OOPSLA2&rft.spage=867&rft.epage=893&rft_id=info:doi/10.1145%2F3763081&rft.externalDBID=n%2Fa&rft.externalDocID=10_1145_3763081 |
| thumbnail_l | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=2475-1421&client=summon |
| thumbnail_m | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=2475-1421&client=summon |
| thumbnail_s | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=2475-1421&client=summon |