Diff Graphs for a fast Incremental Pointer Analysis
A wide range of optimizations and program analyses, including bug finding by means of escape or race analyses, need accurate pointer information. Since accuracy takes time, there is a need for a fast incremental pointer analysis that re-uses prior results and only re-analyzes program changes and their effects instead of the whole program.
We present such an incremental pointer analysis that employs novel diff graphs to represent how a method accesses and/or modifies memory. Regardless of the number of call sites, we only need to analyze a method once; the resulting diff-graph is then used at every call site. If a method changes, we re-generate its diff-graph, and (unless its diff-graph stays the same) its callers’ diff graphs, and so on.
Our algorithm is flow sensitive and context insensitive, does not leak information between call sites, can perform strong updates, and is fast (14 000 LOC with 25 000 bytecode instructions in 2 minutes). When used incrementally for each of the commits of an open-source software repository our incremental approach derives more precise pointer information than established (full) analyses like Spark – albeit in about the same time.
Mon 19 JunDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
16:00 - 18:00
|Panel: Do new Computing Environments lead to new Language Constructs?|
|Diff Graphs for a fast Incremental Pointer Analysis|
ICOOOLPSLink to publication DOI File Attached
|A Formalization IDE Integrated with a Verifying Compiler|
Daniel Welch Clemson University, Blair Durkee Clemson University, Mike Kabbani Clemson University, Murali Sitaraman Clemson UniversityLink to publication DOI File Attached