Improving flow analyses via ΓCFA -: Abstract garbage collection and counting

被引:19
|
作者
Might, Matthew [1 ]
Shivers, Olin [2 ]
机构
[1] Georgia Inst Technol, Atlanta, GA 30332 USA
[2] Northeastern Univ, Boston, MA 02115 USA
关键词
gamma-CFA; program analysis; flow analysis; environment analysis; functional languages; lambda calculus; super-beta; inlining; CPS; continuations; abstract garbage collection; abstract counting;
D O I
10.1145/1160074.1159807
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
We present two independent and complementary improvements for flow-based analysis of higher-order languages: (1) abstract garbage collection and (2) abstract counting, collectively titled Gamma CFA. Abstract garbage collection is an analog to its concrete counterpart: we determine when an abstract resource has become unreachable, and then reallocate it as fresh. This prevents flow sets from merging in the abstract, which has two immediate effects: (1) the precision of the analysis is increased, and (2) the running time of the analysis is frequently reduced. In some nontrivial cases, we achieve an order of magnitude improvement in precision and time simultaneously. In abstract counting, we track how many times an abstract resource has been allocated. A count of one implies that the abstract resource momentarily represents only one concrete resource. This, in turn, allows us to perform environment analysis and to expand the kinds (rather than just the degree) of optimizations available to the compiler.
引用
收藏
页码:13 / 25
页数:13
相关论文
共 1 条