2016
DOI: 10.1145/2914770.2837631
|View full text |Cite
|
Sign up to set email alerts
|

Pushdown control-flow analysis for free

Abstract: Traditional control-flow analysis (CFA) for higher-order languages introduces spurious connections between callers and callees, and different invocations of a function may pollute each other's return flows. Recently, three distinct approaches have been published that provide perfect call-stack precision in a computable manner: CFA2, PDCFA, and AAC. Unfortunately, implementing CFA2 and PDCFA requires significant engineering effort. Furthermore, all three are computationally expensive. For a monovariant analysis… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
24
0

Year Published

2016
2016
2019
2019

Publication Types

Select...
4
2
1

Relationship

4
3

Authors

Journals

citations
Cited by 11 publications
(24 citation statements)
references
References 13 publications
0
24
0
Order By: Relevance
“…Our formulation of a pushdown abstract interpreter computes an abstraction similar to the many existing variants of pushdown flow analysis (Earl et al 2010;Earl et al 2012;Gilray et al 2016;Vardoulakis 2012;Vardoulakis and Shivers 2011).…”
Section: Figure 13: Address Collection and Propagationmentioning
confidence: 99%
“…Our formulation of a pushdown abstract interpreter computes an abstraction similar to the many existing variants of pushdown flow analysis (Earl et al 2010;Earl et al 2012;Gilray et al 2016;Vardoulakis 2012;Vardoulakis and Shivers 2011).…”
Section: Figure 13: Address Collection and Propagationmentioning
confidence: 99%
“…We also transform the evaluation contexts into explicit continuations, and store-allocate continuations at function boundaries and permit two continuations to become conflated at a single continuation address; this redefines each continuation to be a sequence of intraprocedural frames paired with a continuation address for the current invocation. Although the continuation allocator may also be adjusted arbitrarily, recent work has shown that in order to achieve precise call-and-return matching at no asymptotic cost to analysis complexity, the choice of continuation address should be fixed as (e, ρ) where e and ρ are the call target's control and environment respectively [Gilray et al 2016b]. The property we desire for path-sensitive contract verification is that the analysis should only approximate values at different iterations of the same loop, and provide exact execution otherwise.…”
Section: From Symbolic Execution To Verificationmentioning
confidence: 99%
“…What seems to be needed are increasingly nuanced, introspective, and adaptive forms of polyvariance which better suit their targets and the proper-ties we may wish to prove or discover for them. For example, a recent development shows that the polyvariance of continuations can be adapted in a way which guarantees perfect stack precision (i.e., perfect return flows [11,12,24,58]) at no asymptotic complexity overhead [16], a quite ideal trade-off between complexity and precision obtained through a subtle refinement of the polyvariance used. The direction of research in this area and the challenges of precisely modeling dynamic higher-order programming languages suggests an important development would be an easy way to adjust the polyvariance of a flow analysis (in theory and in practical implementations) that is both always safe and fully general.…”
Section: Allocator Instrumentationmentioning
confidence: 99%