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 Nov
|15:40 - 16:05|
Sulekha KulkarniGeorgia Tech, Ravi MangalGeorgia Institute of Technology, Xin ZhangGeorgia Tech, Mayur NaikGeorgia TechDOI
|16:05 - 16:30|
Venkatesh SrinivasanUniversity of Wisconsin - Madison, Thomas RepsUniversity of Wisconsin - Madison and Grammatech Inc.DOI Pre-print
|16:30 - 16:55|
Dmytro PetrashkoEPFL, Vlad UrecheEPFL, Switzerland, Ondřej LhotákUniversity of Waterloo, Martin OderskyEPFL, SwitzerlandDOI
|16:55 - 17:20|
Satish ChandraSamsung Research America, Colin GordonDrexel University, Jean-Baptiste JeanninCarnegie Mellon University , Cole SchlesingerSamsung Research America, Manu SridharanSamsung Research America, Frank TipSamsung Research America, Young-il ChoiSamsung ElectronicsDOI Pre-print