中文

免费的Pushdown控制流分析

编程语言 2016-03-23 v2

摘要

传统的高阶语言控制流分析(CFA),无论是通过约束求解还是抽象解释实现,都会在调用者和被调用者之间引入虚假的连接。一个函数的两次不同调用必然会使彼此的回流相互污染。最近,有三种不同的方法被发表,它们以可计算的方式提供了完美的调用栈精度:CFA2、PDCFA和AAC。不幸的是,CFA2和PDCFA难以实现,需要大量的工程工作。此外,这三种方法的计算代价都很高;对于单变量分析,CFA2的复杂度为O(2n)O(2^n),PDCFA为O(n6)O(n^6),AAC为O(n9logn)O(n^9 \log n)。在本文中,我们描述了一种建立在这些方法之上但既易于实现又计算代价低廉的新技术。关键的洞察在于对续延地址采用了一种不寻常的状态依赖分配策略。我们的技术仅对底层分析施加常数因子的开销,并且在单变量情况下,最坏情况下的代价仅为O(n3)O(n^3)。本文展示了这一发展背后的直观思想、对该分析精度的证明,以及展示其效能的基准测试。

关键词

引用

@article{arxiv.1507.03137,
  title  = {Pushdown Control-Flow Analysis for Free},
  author = {Thomas Gilray and Steven Lyde and Michael D. Adams and Matthew Might and David Van Horn},
  journal= {arXiv preprint arXiv:1507.03137},
  year   = {2016}
}

备注

in Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, 2016