ICOOOLPS 2017
Sun 18 - Fri 23 June 2017 Barcelona, Spain
co-located with ECOOP 2017
Mon 19 Jun 2017 17:00 - 17:30 at Vertex WS216 - Afternoon II Chair(s): Olivier Zendra

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.

preprint (a5-krainz.pdf)227KiB