Shashin Halalingaiah, Vijay Sundaresan, Daryl Maier, V. Krishna Nandivada
{"title":"The ART of Sharing Points-to Analysis (Extended Abstract)","authors":"Shashin Halalingaiah, Vijay Sundaresan, Daryl Maier, V. Krishna Nandivada","doi":"arxiv-2409.09062","DOIUrl":null,"url":null,"abstract":"Data-flow analyses like points-to analysis can vastly improve the precision\nof other analyses, and help perform powerful code optimizations. However,\nwhole-program points-to analysis of large programs tend to be expensive - both\nin terms of time and memory. Consequently, many compilers (both static and JIT)\nand program-analysis tools tend to employ faster - but more conservative -\npoints-to analysis to improve usability. As an alternative to such trading of\nprecision for performance, various techniques have been proposed to perform\nprecise yet expensive fixed-point points-to analyses ahead of time in a static\nanalyzer, store the results, and then transmit them to independent\ncompilation/program-analysis stages that may need them. However, an underlying\nconcern of safety affects all such techniques - can a compiler (or program\nanalysis tool) trust the points-to analysis results generated by another\ncompiler/tool? In this work, we address this issue of trust, while keeping the issues of\nperformance efficiency in mind. We propose ART: Analysis-results Representation\nTemplate - a novel scheme to efficiently and concisely encode results of\nflow-sensitive, context-insensitive points-to analysis computed by a static\nanalyzer for use in any independent system that may benefit from such a highly\nprecise points-to analysis. Our scheme has two components: (i) a producer that\ncan statically perform expensive points-to analysis and encode the same\nconcisely. (ii) a consumer that, on receiving such encoded results, can\nregenerate the points-to analysis results encoded by the artwork if it is\ndeemed safe. We demonstrate the usage of ART by implementing a producer (in\nSoot) and two consumers (in Soot and the Eclipse OpenJ9 JIT compiler). We\nevaluate our implementation over various benchmarks from the DaCapo and\nSPECjvm2008 suites.","PeriodicalId":501197,"journal":{"name":"arXiv - CS - Programming Languages","volume":"199 1","pages":""},"PeriodicalIF":0.0000,"publicationDate":"2024-09-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"arXiv - CS - Programming Languages","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/arxiv-2409.09062","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0
Abstract
Data-flow analyses like points-to analysis can vastly improve the precision
of other analyses, and help perform powerful code optimizations. However,
whole-program points-to analysis of large programs tend to be expensive - both
in terms of time and memory. Consequently, many compilers (both static and JIT)
and program-analysis tools tend to employ faster - but more conservative -
points-to analysis to improve usability. As an alternative to such trading of
precision for performance, various techniques have been proposed to perform
precise yet expensive fixed-point points-to analyses ahead of time in a static
analyzer, store the results, and then transmit them to independent
compilation/program-analysis stages that may need them. However, an underlying
concern of safety affects all such techniques - can a compiler (or program
analysis tool) trust the points-to analysis results generated by another
compiler/tool? In this work, we address this issue of trust, while keeping the issues of
performance efficiency in mind. We propose ART: Analysis-results Representation
Template - a novel scheme to efficiently and concisely encode results of
flow-sensitive, context-insensitive points-to analysis computed by a static
analyzer for use in any independent system that may benefit from such a highly
precise points-to analysis. Our scheme has two components: (i) a producer that
can statically perform expensive points-to analysis and encode the same
concisely. (ii) a consumer that, on receiving such encoded results, can
regenerate the points-to analysis results encoded by the artwork if it is
deemed safe. We demonstrate the usage of ART by implementing a producer (in
Soot) and two consumers (in Soot and the Eclipse OpenJ9 JIT compiler). We
evaluate our implementation over various benchmarks from the DaCapo and
SPECjvm2008 suites.