Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/3394451.3397204acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

TACAI: an intermediate representation based on abstract interpretation

Published: 15 June 2020 Publication History

Abstract

Most Java static analysis frameworks provide an intermediate presentation (IR) of Java Bytecode to facilitate the development of static analyses. While such IRs are often based on three-address code, the transformation itself is a great opportunity to apply optimizations to the transformed code, such as constant propagation.
In this paper, we propose TACAI, a refinable IR that is based on abstract interpretation results of a method's bytecode. Exchanging the underlying abstract interpretation domains enables the creation of various IRs of different precision levels. Our evaluation shows that TACAI can be efficiently computed and provides slightly more precise receiver-type information than Soot's Shimple representation. Furthermore, we show how exchanging the underlying abstract domains directly impacts the generated IR.

Supplementary Material

MP4 File (3394451.3397204.mp4)
Video Presentation

References

[1]
Eric Bodden. 2018. The secret sauce in efficient and precise static analysis: the beauty of distributive, summary-based static analyses (and how to master them). In Companion Proceedings for the ISSTA/ECOOP 2018 Workshops. ACM, 85–93.
[2]
Rastislav Bodík, Rajiv Gupta, and Vivek Sarkar. 2000. ABCD: eliminating array bounds checks on demand. In ACM SIGPLAN Notices, Vol. 35. ACM, 321–333.
[3]
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 Transactions on Programming Languages and Systems (TOPLAS) 13, 4 (1991), 451–490.
[4]
Jeffrey Dean, David Grove, and Craig Chambers. 1995. Optimization of object-oriented programs using static class hierarchy analysis. In European Conference on Object-Oriented Programming. Springer, 77– 101.
[5]
Delphine Demange, Thomas Jensen, and David Pichardie. 2010. A provably correct stackless intermediate representation for Java bytecode. In Asian Symposium on Programming Languages and Systems. Springer, 97–113.
[6]
JB Dietrich, Henrik Schole, Li Sui, and Ewan Tempero. 2017. XCorpus– An executable Corpus of Java Programs. (2017).
[7]
Michael Eichberg and Ben Hermann. 2014. A software product line for static analyses: the OPAL framework. In SOAP@PLDI. ACM, 2:1–2:6.
[8]
Michael Eichberg, Ben Hermann, Mira Mezini, and Leonid Glanz. 2015. Hidden truths in dead software paths. In Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering. 474–484.
[9]
IBM. [n.d.]. WALA Framework. http://wala.sourceforge.net/. [Online; accessed 19-APRIL-2018].
[10]
Steven Muchnick et al. 1997. Advanced compiler design implementation. Morgan Kaufmann.
[11]
Yannis Smaragdakis. [n.d.]. DOOP Framework. https://bitbucket.org/ yanniss/doop/. [Online; accessed 23-August-2018].
[12]
Vijay Sundaresan, Laurie Hendren, Chrislain Razafimahefa, Raja Vallée-Rai, Patrick Lam, Etienne Gagnon, and Charles Godin. 2000.
[13]
Practical virtual method call resolution for Java. ACM SIGPLAN Notices 35, 10 (2000), 264–280.
[14]
Raja Vallée-Rai, Phong Co, Etienne Gagnon, Laurie Hendren, Patrick Lam, and Vijay Sundaresan. 2010. Soot: A Java bytecode optimization framework. In CASCON First Decade High Impact Papers. IBM Corp., 214–224.
[15]
Raja Vallee-Rai and Laurie J Hendren. 1998. Jimple: Simplifying Java bytecode for analyses and transformations. (1998).
[16]
Abstract 1 Introduction 2 Approach 3 Evaluation 4 Related Work 5 Conclusion Acknowledgments References

Cited By

View all
  • (2024)Characterizing and Detecting Program Representation Faults of Static Analysis FrameworksProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3680398(1772-1784)Online publication date: 11-Sep-2024
  • (2024)Unimocg: Modular Call-Graph Algorithms for Consistent Handling of Language FeaturesProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3652109(51-62)Online publication date: 11-Sep-2024

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
SOAP 2020: Proceedings of the 9th ACM SIGPLAN International Workshop on the State Of the Art in Program Analysis
June 2020
19 pages
ISBN:9781450379977
DOI:10.1145/3394451
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 15 June 2020

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Java bytecode
  2. static analysis
  3. static single assignment
  4. three-address code

Qualifiers

  • Research-article

Conference

PLDI '20
Sponsor:

Acceptance Rates

Overall Acceptance Rate 11 of 11 submissions, 100%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)21
  • Downloads (Last 6 weeks)2
Reflects downloads up to 27 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Characterizing and Detecting Program Representation Faults of Static Analysis FrameworksProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3680398(1772-1784)Online publication date: 11-Sep-2024
  • (2024)Unimocg: Modular Call-Graph Algorithms for Consistent Handling of Language FeaturesProceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis10.1145/3650212.3652109(51-62)Online publication date: 11-Sep-2024

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media