scispace - formally typeset
Proceedings ArticleDOI

Mix your contexts well: opportunities unleashed by recent advances in scaling context-sensitivity

TLDR
A detailed comparative study of the existing precise context-sensitive heap analyses and proposes novel context abstractions that lead to a new sweet-spot in the arena, and shows that the newer proposals not only enhance the precision of both LSRV contexts and object-sensitive analyses, but also scale well to large programs.
Abstract
Existing precise context-sensitive heap analyses do not scale well for large OO programs. Further, identifying the right context abstraction becomes quite intriguing as two of the most popular categories of context abstractions (call-site- and object-sensitive) lead to theoretically incomparable precision. In this paper, we address this problem by first doing a detailed comparative study (in terms of precision and efficiency) of the existing approaches, both with and without heap cloning. In addition, we propose novel context abstractions that lead to a new sweet-spot in the arena. We first enhance the precision of level-summarized relevant value (LSRV) contexts (a highly scalable abstraction with precision matching that of call-site-sensitivity) using heap cloning. Then, motivated by the resultant scalability, we propose the idea of mixing various context abstractions, and add the advantages of k-object-sensitive analyses to LSRV contexts, in an efficient manner. The resultant context abstraction, which we call lsrvkobjH, also leads to a novel connection between the two broad variants of otherwise incomparable context-sensitive analyses. Our evaluation shows that the newer proposals not only enhance the precision of both LSRV contexts and object-sensitive analyses (to perform control-flow analysis of Java programs), but also scale well to large programs.

read more

Citations
More filters
Journal ArticleDOI

Making pointer analysis more precise by unleashing the power of selective context sensitivity

TL;DR: The Unity-Relay framework as discussed by the authors is a one-two-punch approach to combine and maximize the precision of all components of a context-sensitive pointer analysis for hard-to-analyze Java programs.
Journal ArticleDOI

Incremental and Modular Context-sensitive Analysis

TL;DR: In this paper, the authors describe, implement, and evaluate an algorithm that performs efficient context-sensitive analysis incrementally on modular partitions of programs, where modifications are small and isolated within a few components, and it is desirable to reuse as much as possible previous analysis results.
Journal ArticleDOI

Analysis and Transformation of Constrained Horn Clauses for Program Verification

TL;DR: In this article, the authors present a survey of techniques for translating verification problems for different programming languages, and in general software systems, into satisfiability problems for constrained Horn clauses (CHCs), a term that has become popular in the verification field to refer to CLP programs.
Journal ArticleDOI

Dynamic dispatch of context-sensitive optimizations

TL;DR: This paper combines finite state machines and dynamic dispatching to allow fully context-sensitive specialization while cloning only functions that are effectively optimized, which makes it possible to apply very liberal optimizations, such as context- sensitive constant propagation, in large programs—something that could not have been easily done before.
Proceedings ArticleDOI

How (not) to write Java pointer analyses after 2020

TL;DR: This paper summarizes some such learnings from its author's research to help readers beat the state-of-the-art in (Java) pointer analysis, as they move into their research careers beyond 2020.
References
More filters
Proceedings ArticleDOI

Scalability-first pointer analysis with self-tuning context-sensitivity

TL;DR: The Scaler framework efficiently estimates the amount of points-to information that would be needed to analyze each method with different variants of context-sensitivity, and selects an appropriate variant for each method so that the total amount of pointed information is bounded, while utilizing the available space to maximize precision.
Proceedings ArticleDOI

Interprocedural data flow analysis in Soot using value contexts

TL;DR: A general-purpose interprocedural analysis framework for Soot using data flow values for context-sensitivity and the key ideas of the tabulation method of the functional approach and the technique of value-based termination of call string construction are described.
Book ChapterDOI

Efficiency, precision, simplicity, and generality in interprocedural data flow analysis: resurrecting the classical call strings method

TL;DR: This work proposes a variant of the classical full call strings method which reduces the number of call strings, and hence the analysis time, by orders of magnitude as corroborated by the empirical measurements.
Journal ArticleDOI

Precision-guided context sensitivity for pointer analysis

TL;DR: This work presents a more principled approach for identifying precision-critical methods, based on general patterns of value flows that explain where most of the imprecision arises in context-insensitive pointer analysis, and provides an efficient algorithm to recognize these flow patterns in a given program and exploit them to yield good tradeoffs between analysis precision and speed.
Journal ArticleDOI

Optimal incremental parsing

TL;DR: This communication sets the problem of incremental parsing in the context of a complete incremental compiling system and finds that, according to the incrementally paradigm of the attribute evaluator and data-flow analyzer to be used, two definitions of optimal incrementality in a parser are possible.
Related Papers (5)