【24h】

Evaluating Design Tradeoffs in Numeric Static Analysis for Java

机译:在Java数值静态分析中评估设计权衡

获取原文

摘要

Numeric static analysis for Java has a broad range of potentially useful applications, including array bounds checking and resource usage estimation. However, designing a scalable numeric static analysis for real-world Java programs presents a multitude of design choices, each of which may interact with others. For example, an analysis could handle method calls via either a top-down or bottom-up interprocedu-ral analysis. Moreover, this choice could interact with how we choose to represent aliasing in the heap and/or whether we use a relational numeric domain, e.g., convex polyhedra. In this paper, we present a family of abstract interpretation-based numeric static analyses for Java and systematically evaluate the impact of 162 analysis configurations on the DaCapo benchmark suite. Our experiment considered the precision and performance of the analyses for discharging array bounds checks. We found that top-down analysis is generally a better choice than bottom-up analysis, and that using access paths to describe heap objects is better than using summary objects corresponding to points-to analysis locations. Moreover, these two choices are the most significant, while choices about the numeric domain, representation of abstract objects, and context-sensitivity make much less difference to the precision/performance tradeoff.
机译:Java的数值静态分析具有广泛的潜在有用应用程序,包括数组边界检查和资源使用估计。但是,为现实的Java程序设计可伸缩的数值静态分析会带来多种设计选择,每个选择都可能会相互影响。例如,分析可以通过自上而下或自下而上的进程间分析来处理方法调用。此外,此选择可能与我们如何选择在堆中表示别名和/或是否使用关系数值域(例如凸多面体)相互影响。在本文中,我们介绍了Java的基于抽象解释的数字静态分析族,并系统地评估了162种分析配置对DaCapo基准套件的影响。我们的实验考虑了进行阵列边界检查的分析的精度和性能。我们发现自上而下的分析通常比自下而上的分析更好,并且使用访问路径描述堆对象比使用对应于指向分析位置的摘要对象更好。此外,这两个选择是最重要的,而有关数字域,抽象对象的表示和上下文敏感度的选择则对精度/性能的折中影响很小。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号