一句话:提出堆片段框架,使高阶必别名/环境分析能够通用且稳健地推理递归,并实例化抽象计数分析。
高阶必别名分析(常以环境分析形式出现)能提供深层行为洞察,但现有理论,尤其那些最具洞察力的理论,仅能在有限情形下推理递归。作者指出这一弱点并非理论本身固有,而源于其定义框架:这些机器模型在求值过程中串接堆,并将每个抽象资源分配在堆中,因而混淆了抽象上共同存活的资源,例如递归创建的绑定。论文提出堆片段(heap fragments)作为通用技术,使这类理论能够通用而稳健地推理递归。作者在堆片段框架中实例化抽象计数分析,并将其性能与先前的整堆框架进行比较;文中还勾勒了在该框架中实现绑定不变式这一更强环境分析的方法。
Theories of higher-order must-alias analysis, often under the guise of environment analysis, provide deep behavioral insight. But these theories---in particular those that are most insightful otherwise---can reason about recursion only in limited cases. This weakness is not inherent to the theories but to the frameworks in which they're defined: machine models which thread the heap through evaluation. Since these frameworks allocate each abstract resource in the heap, the constituent theories of environment analysis conflate co-live resources identified in the abstract, such as recursively-created bindings. We present heap fragments as a general technique to allow these theories to reason about recursion in a general and robust way. We instantiate abstract counting in a heap-fragment framework and compare its performance to a precursor entire-heap framework. We also sketch an approach to realizing binding invariants, a more powerful environment analysis, in the heap-fragment framework.
@article{paperbot1127,
title = {Newly-single and loving it: improving higher-order must-alias analysis with heap fragments},
author = {Kimball Germane and Jay McCarthy},
journal = {Proceedings of the ACM on Programming Languages},
volume = {5},
number = {ICFP},
year = {2021},
doi = {10.1145/3473601}
}