Shashin Halalingaiah, Vijay Sundaresan, Daryl Maier, V. Krishna Nandivada
{"title":"分享点到分析的艺术(扩展摘要)","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":"{\"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}","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}
The ART of Sharing Points-to Analysis (Extended 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.