Efficient Pointer Analysis of Java in Logic
Loading...
Date
2017-05-16
Authors
Thiessen, Rei
Advisor
Lhoták, Ondřej
Journal Title
Journal ISSN
Volume Title
Publisher
University of Waterloo
Abstract
Points-to analysis for Java
benefits greatly from context sensitivity.
CFL-reachability and k-limited context strings
are two approaches to obtaining context sensitivity with different
advantages:
CFL-reachability allows local reasoning about data value flow
and thus is suitable for demand-driven analyses,
whereas k-limited analyses allow object sensitivity
which is a superior calling-context abstraction for object-oriented languages.
We combine the advantages of both approaches
to obtain a context-sensitive analysis
that is as precise as k-limited context strings,
but is more efficient to compute.
Our key insight is based on a novel abstraction
of contexts adapted from CFL-reachability, which represents
a relation between two calling contexts as a composition of
transformations over contexts.
We formulate pointer analysis in an algebraic structure
of context transformations, which is a set of functions
over calling contexts closed under function composition.
We show that the context representation of context-string-based
analyses
is an explicit enumeration of all input and output values of
context transformations.
CFL-reachability-based pointer analysis is formulated to use call strings as contexts,
but the context transformations concept can be applied to any context
abstraction used in k-limited analyses, including object- and type-sensitive analysis.
The result is a more efficient algorithm for computing context-sensitive
pointer information for a wide variety of context configurations.
Description
Keywords
Pointer analysis, Static analysis, Programming languages