SHARP: fast incremental context-sensitive pointer analysis for Java.
Published in Proceedings of the ACM on Programming Languages (OOPSLA’22), 2022
Recommended citation: Liu, Bozhen, and Jeff Huang. (2022). "SHARP: fast incremental context-sensitive pointer analysis for Java." OOSPLA. https://dl.acm.org/doi/pdf/10.1145/3527332
Abstract
We present SHARP, an incremental context-sensitive pointer analysis algorithm that scales to real-world large complex Java programs and can also be efficiently parallelized. To our knowledge, SHARP is the first algorithm to tackle context-sensitivity in the state-of-the-art incremental pointer analysis (with regards to code modifications including both statement additions and deletions), which applies to both k-CFA and k-obj. To achieve it, SHARP tackles several technical challenges: soundness, redundant computations, and parallelism to improve scalability without losing precision. We conduct an extensive empirical evaluation of SHARP on large and popular Java projects and their code commits, showing impressive performance improvement: our incremental algorithm only requires on average 31 seconds to handle a real-world code commit for k-CFA and k-obj, which has comparable performance to the state-of-the-art incremental context-insensitive pointer analysis. Our parallelization further improves the performance and enables SHARP to finish within 18 seconds per code commit on average on an eight-core machine.