TY - JOUR
T1 - Rethinking incremental and parallel pointer analysis
AU - Liu, Bozhen
AU - Huang, Jeff
AU - Rauchwerger, Lawrence
N1 - Publisher Copyright:
© 2019 Copyright held by the owner/author(s).
PY - 2019/3
Y1 - 2019/3
N2 - Pointer analysis is at the heart of most interprocedural program analyses.However, scaling pointer analysis to large programs is extremely challenging. In this article, we study incremental pointer analysis and present a new algorithm for computing the points-to information incrementally (i.e., upon code insertion, deletion, and modification). Underpinned by new observations of incremental pointer analysis, our algorithm significantly advances the state of the art in that it avoids redundant computations and the expensive graph reachability analysis, and preserves precision as the corresponding whole program exhaustive analysis. Moreover, it is parallel within each iteration of fixed-point computation. We have implemented our algorithm, IPA, for Java based on the WALA framework and evaluated its performance extensively on real-world large, complex applications. Experimental results show that IPA achieves more than 200X speedups over existing incremental algorithms, two to five orders of magnitude faster than whole program pointer analysis, and also improves the performance of an incremental data race detector by orders of magnitude. Our IPA implementation is open source and has been adopted by WALA.
AB - Pointer analysis is at the heart of most interprocedural program analyses.However, scaling pointer analysis to large programs is extremely challenging. In this article, we study incremental pointer analysis and present a new algorithm for computing the points-to information incrementally (i.e., upon code insertion, deletion, and modification). Underpinned by new observations of incremental pointer analysis, our algorithm significantly advances the state of the art in that it avoids redundant computations and the expensive graph reachability analysis, and preserves precision as the corresponding whole program exhaustive analysis. Moreover, it is parallel within each iteration of fixed-point computation. We have implemented our algorithm, IPA, for Java based on the WALA framework and evaluated its performance extensively on real-world large, complex applications. Experimental results show that IPA achieves more than 200X speedups over existing incremental algorithms, two to five orders of magnitude faster than whole program pointer analysis, and also improves the performance of an incremental data race detector by orders of magnitude. Our IPA implementation is open source and has been adopted by WALA.
KW - Dynamic graph algorithms
KW - Incremental pointer analysis
KW - Parallelization
UR - http://www.scopus.com/inward/record.url?scp=85062636939&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85062636939&partnerID=8YFLogxK
U2 - 10.1145/3293606
DO - 10.1145/3293606
M3 - Article
AN - SCOPUS:85062636939
SN - 0164-0925
VL - 41
JO - ACM Transactions on Programming Languages and Systems
JF - ACM Transactions on Programming Languages and Systems
IS - 1
M1 - 6
ER -