Proceedings Article10.1145/1929501.1929504
Ordering multiple continuations on the stack
Dimitrios Vardoulakis,Olin Shivers +1 more
- 24 Jan 2011
- pp 13-22
TL;DR: It is shown that tail calls can be generalized efficiently for many continuations because the run-time check to determine which continuation to pop to can be avoided with a simple static analysis.
read more
Abstract: Passing multiple continuation arguments to a function in CPS form allows one to encode a wide variety of direct-style control constructs, such as conditionals, exceptions, and multi-return function calls. We show that, with a simple syntactic restriction on the CPS language, one can prove that these multi-continuation arguments can be compiled into stack frames in the traditional manner. The restriction comes with no loss in expressive power, since we can still encode the same control mechanisms.In addition, we show that tail calls can be generalized efficiently for many continuations because the run-time check to determine which continuation to pop to can be avoided with a simple static analysis. A prototype implementation in Scheme48 shows that our analysis is very precise.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Relatively Complete Pushdown Analysis of Escape Continuations
Kimball Germane,Matthew Might +1 more
- 13 Jan 2019
TL;DR: A generalization of the CFA2 programming language that analyzes escape continuations with pushdown precision in their most-general form is presented, and an continuation age analysis as a client of \(\mathrm {MCCFA}2\) that reveals critical function call optimizations is presented.
1
Pushdown flow analysis of first-class control
Dimitrios Vardoulakis,Olin Shivers +1 more
- 19 Sep 2011
TL;DR: This paper extends the CFA2 flow analysis to create the first pushdown flow analysis for languages with first-class control to allow continuations to escape to, and be restored from, the heap and presents a summarization algorithm that handles escaping continuations via a new kind of summary edge.
References
Call-by-name, call-by-value and the λ-calculus
TL;DR: This paper examines the old question of the relationship between ISWIM and the λ-calculus, using the distinction between call-by-value and call- by-name, and finds that operational equality is not preserved by either of the simulations.
1.3K
•Book
Compiling with continuations
Andrew W. Appel
- 29 Nov 1991
TL;DR: In this article, the authors show how continuation-passing style is used as an intermediate representation to perform optimizations and program transformations for modern languages like ML, and show how concepts from the theory of programming languages can be applied to the production of practical optimizing compilers.
•Book
Two approaches to interprocedural data flow analysis
Micha Sharir,Amir Pnueli +1 more
- 14 Sep 2011
Control-flow analysis of higher-order languages of taming lambda
Olin Grigsby Shivers
- 01 May 1991
TL;DR: In this article, the authors present a technique for recovering the control-flow graph of a Scheme program at compile time, which can be used to perform several data-flow analysis optimisations, including copy propagation, induction-variable elimination, useless variable elimination, and type recovery.
380
Orbit: an optimizing compiler for scheme
Paul Hudak,David Kranz +1 more
- 01 Jan 1988
TL;DR: Orbit was an optimizing compiler for T, a dialect of Scheme.
319
Related Papers (5)
Julia Lawall,Olivier Danvy +1 more
- 01 Mar 1993
Pierre Jouvelot,David K. Gifford +1 more
- 21 Jun 1989
Paul Downen,Luke Maurer,Zena M. Ariola,Daniele Varacca +3 more
- 08 Sep 2014