Publication Details
SkipFlow: Improving the Precision of Points-to Analysis using Primitive Values and Predicate Edges
points-to analysis, static analysis, pointer analysis, compiler, optimization
A typical points-to analysis such as Andersen's or Steensgaard's may lose
precision because it ignores the branching structure of the analyzed program.
Moreover, points-to analysis typically focuses on objects only, not considering
instructions manipulating primitive values. We argue that such an approach leads
to an unnecessary precision loss, for example, when primitive constants true and
false flow out of method calls. We propose a novel lightweight points-to analysis
called SkipFlow that interprocedurally tracks the flow of both primitives and
objects, and explicitly captures the branching structure of the code using
predicate edges. At the same time, however, SkipFlow is as lightweight and
scalable as possible, unlike a traditional flow-sensitive analysis. We apply
SkipFlow to GraalVM Native Image, a closed-world solution to building standalone
binaries for Java applications. We evaluate the implementation using a set of
microservice applications as well as well-known benchmark suites. We show that
SkipFlow reduces the size of the application in terms of reachable methods by 9%
on average without significantly increasing the analysis time.
@inproceedings{BUT193310,
author="KOZÁK, D. and STANCU, C. and VOJNAR, T. and WIMMER, C.",
title="SkipFlow: Improving the Precision of Points-to Analysis using Primitive Values and Predicate Edges",
booktitle="Proceedings of the 23rd ACM/IEEE International Symposium on Code Generation and Optimization",
year="2025",
pages="347--361",
publisher="Association for Computing Machinery",
address="New York",
doi="10.1145/3696443.3708932",
isbn="979-8-4007-1275-3",
url="https://dl.acm.org/doi/10.1145/3696443.3708932"
}