首页> 外文会议>ACM SIGPLAN conference on Programming language design and implementation >Cloning-based context-sensitive pointer alias analysis using binary decision diagrams
【24h】

Cloning-based context-sensitive pointer alias analysis using binary decision diagrams

机译:使用二进制决策图的基于克隆的上下文相关指针别名分析

获取原文

摘要

This paper presents the first scalable context-sensitive, inclusion-based pointer alias analysis for Java programs. Our approach to context sensitivity is to create a clone of a method for every context of interest, and run a context-insensitive algorithm over the expanded call graph to get context-sensitive results. For precision, we generate a clone for every acyclic path through a program's call graph, treating methods in a strongly connected component as a single node. Normally, this formulation is hopelessly intractable as a call graph often has 10 14 acyclic paths or more. We show that these exponential relations can be computed efficiently using binary decision diagrams (BDDs). Key to the scalability of the technique is a context numbering scheme that exposes the commonalities across contexts. We applied our algorithm to the most popular applications available on Sourceforge, and found that the largest programs, with hundreds of thousands of Java bytecodes, can be analyzed inunder 20 minutes.This paper shows that pointer analysis, and many other queries and algorithms, can be described succinctly and declaratively using Datalog, a logic programming language. We have developed a system called bddbddb that automatically translates Datalog programs into highly efficient BDD implementations. We used this approach to develop a variety of context-sensitive algorithms including side effect analysis, type analysis, and escape analysis.
机译:本文介绍了Java程序的第一个可扩展的上下文敏感,包括基于纳入的指针别名分析。我们的上下文敏感性的方法是为每个感兴趣的环境创建一种方法的克隆,并在扩展的呼叫图上运行上下文不敏感算法,以获得上下文敏感结果。为了精确度,我们通过程序的呼叫图生成每个无循环路径的克隆,以强连接的组件处理为单个节点。通常,该配方是无可救药的难以应变,因为呼叫图通常具有10个14个无循环路径或更多。我们表明这些指数关系可以使用二进制决策图(BDD)有效地计算。该技术可扩展性的关键是一个上下文编号方案,其暴露跨越上下文的共性。我们将算法应用于来自SourceForge上的最流行的应用程序,并发现最大的程序,其中包含数十万个Java字节码,可以在20分钟内分析。这篇论文显示指针分析,以及许多其他查询和算法,可以简洁地和声明地使用Datalog,逻辑编程语言描述。我们开发了一个名为BDDBDDB的系统,自动将Datalog程序转换为高效的BDD实现。我们使用这种方法来开发各种上下文敏感算法,包括副作用分析,型分析和逃生分析。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号