Evaluating Design Tradeoffs in Numeric Static Analysis for Java
Shiyi Wei, Piotr Mardziel, Andrew Ruef, Jeffrey S. Foster, Michael, Hicks

TL;DR
This paper systematically evaluates 162 configurations of numeric static analysis for Java, revealing that top-down analysis and access paths significantly improve precision and performance in array bounds checking.
Contribution
It introduces a family of abstract interpretation-based analyses for Java and provides a comprehensive evaluation of their design tradeoffs on real-world benchmarks.
Findings
Top-down analysis outperforms bottom-up.
Using access paths improves analysis precision.
Choice of numeric domain has less impact.
Abstract
Numeric static analysis for Java has a broad range of potentially useful applications, including array bounds checking and resource usage estimation. However, designing a scalable numeric static analysis for real-world Java programs presents a multitude of design choices, each of which may interact with others. For example, an analysis could handle method calls via either a top-down or bottom-up interprocedural analysis. Moreover, this choice could interact with how we choose to represent aliasing in the heap and/or whether we use a relational numeric domain, e.g., convex polyhedra. In this paper, we present a family of abstract interpretation-based numeric static analyses for Java and systematically evaluate the impact of 162 analysis configurations on the DaCapo benchmark suite. Our experiment considered the precision and performance of the analyses for discharging array bounds…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
