Evaluating Design Tradeoffs in Numeric Static Analysis for Java

02/24/2018
by   Shiyi Wei, et al.
0

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 checks. We found that top-down analysis is generally a better choice than bottom-up analysis, and that using access paths to describe heap objects is better than using summary objects corresponding to points-to analysis locations. Moreover, these two choices are the most significant, while choices about the numeric domain, representation of abstract objects, and context-sensitivity make much less difference to the precision/performance tradeoff.

READ FULL TEXT

page 15

page 17

research
01/08/2020

Deep Static Modeling of invokedynamic

Java 7 introduced programmable dynamic linking in the form of the invoke...
research
07/31/2022

Tai-e: A Static Analysis Framework for Java by Harnessing the Best Designs of Classics

Static analysis is a mature field with applications to bug detection, se...
research
07/19/2022

To what extent can we analyze Kotlin programs using existing Java taint analysis tools? (Extended Version)

As an alternative to Java, Kotlin has gained rapid popularity since its ...
research
03/30/2021

IFDS Taint Analysis with Access Paths

Over the years, static taint analysis emerged as the analysis of choice ...
research
04/24/2023

Context Sensitivity without Contexts: A Cut-Shortcut Approach to Fast and Precise Pointer Analysis

Over the past decades, context sensitivity has been considered as one of...
research
02/14/2020

Reusing Static Analysis across Different Domain-Specific Languages using Reference Attribute Grammars

Context: Domain-specific languages (DSLs) enable domain experts to speci...
research
05/06/2023

Unifying Pointer Analyses for Polyglot Inter-operations through Summary Specialization

Modular analysis of polyglot applications is challenging because heap ob...

Please sign up or login with your details

Forgot password? Click here to reset