paperbot · PL 论文追踪

全部论文 待读 收藏

P2 The ART of Sharing Points-to Analysis: Reusing Points-to Analysis Results Safely and Efficiently

共享指针分析的 ART:安全且高效地复用指针分析结果
OOPSLA 8(OOPSLA2)2024匹配度 3/10 · 论文属于经典静态分析(Java 流敏感指针分析结果的编码与安全复用),与用户关注的 PL×AI/LLM、Agentic 程序分析、浮点程序分析或贝叶斯程序分析等交叉方向没有直接关联;仅在广义静态分析方法和工业落地偏好上存在边缘相关。引用 4 inbox
Shashin Halalingaiah, Vijay Sundaresan, Daryl Maier, V. Krishna Nandivada
dblp: 2026-09-10crossref: 2026-09-10arxiv: 2026-09-10

AI 速览

一句话:提出 ART 模板,紧凑编码并在校验安全后直接再生流敏感指针分析结果,使消费者免于昂贵不动点计算。

精确的全程序指针分析能提升优化与其他分析精度,但对大型 Java 程序代价高昂,且跨编译器/工具复用已有精确结果存在可信性问题。本文提出 ART(Analysis-Results Representation Template),紧凑编码流敏感、上下文不敏感指针分析结果:生产者用静态分析器计算并编码,消费者在判定安全后重新生成结果,完全避免不动点计算。作者在 Soot 中实现生产者,在 Soot 与 Eclipse OpenJ9 JIT 中实现消费者,并在 DaCapo、SPECjvm2008 上评估。消费者获得精确结果的平均耗时不足原静态分析的 1%,存储开销平均约为程序大小的 4%。

问题
大型 Java 程序的全程序精确指针分析在时间和内存上代价高,而将某工具算出的精确结果交给另一编译器/工具复用时,又缺乏对结果是否可信、安全的保障。
方法
提出 ART(Analysis-Results Representation Template),用紧凑模板编码流敏感、上下文不敏感指针分析结果;生产者静态计算并编码,消费者验证安全后无需不动点计算即可再生结果。
评估
在 Soot 实现生产者、在 Soot 和 Eclipse OpenJ9 JIT 实现消费者,基于 DaCapo 与 SPECjvm2008 评估;消费者耗时平均不足原分析 1%,存储开销约程序大小 4%。
原文摘要(Abstract)

Data-flow analyses like points-to analysis can vastly improve the precision of other analyses, and enable powerful code optimizations. However, whole-program points-to analysis of large Java programs tends 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 analyses 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 in the context of Java, while accounting for the issue of performance. 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 precise points-to analysis. ART also allows for fast regeneration of the encoded sound analysis results in such systems. 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 (called art work), can regenerate the points-to analysis results encoded by the art work if it is deemed “safe”. The regeneration scheme completely avoids fixed-point computations and thus can help consumers like static analyzers and JIT compilers to obtain precise points-to information without paying a prohibitively high cost. We demonstrate the usage of ART by implementing a producer (in Soot) and two consumers (in Soot and the Eclipse OpenJ9 JIT compiler). We have evaluated our implementation over various benchmarks from the DaCapo and SPECjvm2008 suites. Our results demonstrate that using ART, a consumer can obtain precise flow-sensitive, context-insensitive points-to analysis results in less than (average) 1% of the time taken by a static analyzer to perform the same analysis, with the storage overhead of ART representing a small fraction of the program size (average around 4%).

链接与引用

DOI 原文 · arXiv · PDF(开放获取) · DBLP

BibTeX
@article{HalalingaiahSMN24,
  title = {The ART of Sharing Points-to Analysis: Reusing Points-to Analysis Results Safely and Efficiently},
  author = {Shashin Halalingaiah and Vijay Sundaresan and Daryl Maier and V. Krishna Nandivada},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {8},
  number = {OOPSLA2},
  year = {2024},
  doi = {10.1145/3689803}
}