当前位置: X-MOL 学术ACM Trans. Program. Lang. Syst. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
A Principled Approach to Selective Context Sensitivity for Pointer Analysis
ACM Transactions on Programming Languages and Systems ( IF 1.5 ) Pub Date : 2020-05-25 , DOI: 10.1145/3381915
Yue Li 1 , Tian Tan 1 , Anders Møller 2 , Yannis Smaragdakis 3
Affiliation  

Context sensitivity is an essential technique for ensuring high precision in static analyses. It has been observed that applying context sensitivity partially, only on a select subset of the methods, can improve the balance between analysis precision and speed. However, existing techniques are based on heuristics that do not provide much insight into what characterizes this method subset. In this work, we present a more principled approach for identifying precision-critical methods, based on general patterns of value flows that explain where most of the imprecision arises in context-insensitive pointer analysis. Using this theoretical foundation, we present an efficient algorithm, Z IPPER , to recognize these flow patterns in a given program and employ context sensitivity accordingly. We also present a variant, Z IPPER e , that additionally takes into account which methods are disproportionally costly to analyze with context sensitivity. Our experimental results on standard benchmark and real-world Java programs show that Z IPPER preserves effectively all of the precision (98.8%) of a highly precise conventional context-sensitive pointer analysis (2-object-sensitive with a context-sensitive heap, 2obj for short), with a substantial speedup (on average, 3.4× and up to 9.4×), and that Z IPPER e preserves 94.7% of the precision of 2obj, with an order-of-magnitude speedup (on average, 25.5× and up to 88×). In addition, for 10 programs that cannot be analyzed by 2obj within a three-hour time limit, on average Z IPPER e can guide 2obj to finish analyzing them in less than 11 minutes with high precision compared to context-insensitive and introspective context-sensitive analyses.

中文翻译:

用于指针分析的选择性上下文敏感性的原则方法

上下文敏感性是确保静态分析高精度的一项重要技术。已经观察到,仅在选择的方法子集上部分应用上下文敏感性可以提高分析精度和速度之间的平衡。然而,现有的技术是基于启发式的,不能深入了解该方法子集的特征。在这项工作中,我们提出了一种更有原则的方法来识别精度关键方法,基于价值流的一般模式,这些模式解释了上下文不敏感指针分析中大部分不精确出现的位置。利用这个理论基础,我们提出了一种有效的算法,Z伊珀,以识别给定程序中的这些流模式并相应地使用上下文敏感性。我们还提出了一个变体,Z伊珀 e ,这还考虑了哪些方法在使用上下文敏感性进行分析时成本不成比例。我们在标准基准和实际 Java 程序上的实验结果表明,Z伊珀有效地保留了高精度传统上下文敏感指针分析(2-object-sensitive with a context-sensitive heap,简称 2obj)的所有精度(98.8%),并具有显着的加速(平均为 3.4 倍或更高)至 9.4×),而 Z伊珀 e 保留了 2obj 的 94.7% 的精度,具有数量级的加速(平均为 25.5 倍,最高为 88 倍)。此外,对于 10 个在 3 小时时限内无法被 2obj 分析的程序,平均 Z伊珀 e 与上下文不敏感和内省的上下文敏感分析相比,可以指导 2obj 在不到 11 分钟的时间内完成对它们的高精度分析。
更新日期:2020-05-25
down
wechat
bug