Practical programs share large modules of code. However, many program analyses are ineffective at reusing analysis results for shared code across programs. We present POLYMER, an analysis optimizer to address this problem. POLYMER runs the analysis offline on a corpus of training programs and learns analysis facts over shared code. It prunes the learnt facts to eliminate intermediate computations and then reuses these pruned facts to accelerate the analysis of other programs that share code with the training corpus.
We have implemented POLYMER to accelerate analyses specified in Datalog, and apply it to optimize two analyses for Java programs: a call-graph analysis that is flow- and context-insensitive, and a points-to analysis that is flow- and context-sensitive. We evaluate the resulting analyses on ten programs from the DaCapo suite that share the JDK library. POLYMER achieves average speedups of 2.6× for the call- graph analysis and 5.2× for the points-to analysis.
Wed 2 NovDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
15:40 - 17:20
|Accelerating Program Analyses by Cross-Program Training|
Sulekha Kulkarni Georgia Tech, Ravi Mangal Georgia Institute of Technology, Xin Zhang Georgia Tech, Mayur Naik Georgia TechDOI
|An Improved Algorithm for Slicing Machine Code|
Venkatesh Srinivasan University of Wisconsin - Madison, Thomas Reps University of Wisconsin - Madison and Grammatech Inc.DOI Pre-print
|Call Graphs for Languages with Parametric Polymorphism|
Dmytro Petrashko EPFL, Vlad Ureche EPFL, Switzerland, Ondřej Lhoták University of Waterloo, Martin Odersky EPFL, SwitzerlandDOI
Satish Chandra Samsung Research America, Colin Gordon Drexel University, Jean-Baptiste Jeannin Carnegie Mellon University , Cole Schlesinger Samsung Research America, Manu Sridharan Samsung Research America, Frank Tip Samsung Research America, Young-il Choi Samsung ElectronicsDOI Pre-print