The ART of Sharing Points-to Analysis (Extended Abstract)

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.
分享点到分析的艺术(扩展摘要)
数据流分析(如点到分析)可以大大提高其他分析的精度,并有助于执行强大的代码优化。然而,对大型程序进行全程序点到点分析往往耗费大量时间和内存。因此,许多编译器(包括静态编译器和 JIT 编译器)和程序分析工具倾向于采用更快但更保守的点对点分析,以提高可用性。为了替代这种以精度换性能的做法,人们提出了各种技术,在静态分析器中提前执行精确但昂贵的定点到分析,存储结果,然后将其传输到可能需要它们的独立编译/程序分析阶段。然而,安全问题是影响所有此类技术的根本问题--编译器(或程序分析工具)能否信任另一个编译器/工具生成的点到分析结果?在这项工作中,我们在考虑性能效率问题的同时,解决了信任问题。我们提出了 ART:分析结果表示模板(Analysis-results RepresentationTemplate)--一种新颖的方案,用于高效、简洁地编码由静态分析器计算的低敏感、上下文不敏感的点对分析结果,供任何可能受益于这种高度精确的点对分析的独立系统使用。我们的方案由两部分组成(i) 生产者可以静态执行昂贵的点对分析,并对其进行精确编码。(ii) 消费者在接收到这种编码结果后,如果认为安全,可以生成艺术品编码的点对分析结果。我们通过实现一个生产者(在 Soot 中)和两个消费者(在 Soot 和 Eclipse OpenJ9 JIT 编译器中)来演示 ART 的用法。我们通过 DaCapo 和SPECjvm2008 套件中的各种基准对我们的实现进行了评估。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信