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 Jun
|16:00 - 17:00|
|17:00 - 17:30|
|Link to publication DOI File Attached|
|17:30 - 18:00|
Daniel WelchClemson University, Blair DurkeeClemson University, Mike KabbaniClemson University, Murali SitaramanClemson UniversityLink to publication DOI File Attached