## Flexible And Practical Flow Analysis for Higher-Order Programming Languages (1996)

Citations: | 3 - 0 self |

### BibTeX

@TECHREPORT{Dybvig96flexibleand,

author = {R. Kent Dybvig and Ph. D and Daniel P. Friedman and Peter Shirley and Jon Barwise and J. Michael Ashley and J. Michael Ashley},

title = {Flexible And Practical Flow Analysis for Higher-Order Programming Languages},

institution = {},

year = {1996}

}

### OpenURL

### Abstract

by

### Citations

620 |
Compiling with Continuations
- Appel
- 1992
(Show Context)
Citation Context ...onverting to A-normal form simplifies the semantics, but it is still more complicated than necessary. Thus in a second step A-normal form expressions are converted to continuation-passing style (CPS) =-=[2]-=-. An operational semantics for CPS A-normal expressions style is defined, and this semantics is the standard semantics. 21sM = c | v | (if (pair? M1) M2 M3) | (call/cc M) | (lambda (v1 ... vn)M) | (M0... |

268 | The essence of compiling with continuations
- Flanagan, Sabry, et al.
- 1993
(Show Context)
Citation Context ...s, core Scheme is translated in two steps to a form whose semantics is simpler and thus better suited as the basis of our flow analysis. In the first step core Scheme is translated into A-normal form =-=[27]-=-. A-normal form is a representation that normalizes continuations and names intermediate expressions not in tail position. An operational semantics is given for this language. Converting to A-normal f... |

151 | Essentials of Programming Languages
- Friedman, Wand, et al.
- 2001
(Show Context)
Citation Context ....4 and 3.5. It is a straightforward adaptation of the algorithm to given by Flanagan et. al. [27]. The program assumes that the input expression has been parsed into variant records, and variant-case =-=[28]-=- is used to destructure the records. normalize-term is called to initiate the translation. By linearizing the code and naming complex intermediate expressions, the structure of continuations is simpli... |

118 | Efficient chaotic iteration strategies with widenings
- Bourdoncle
- 1993
(Show Context)
Citation Context ...e number of times. The algorithm to do this is called a chaotic iteration algorithm, and a particular choice for the order in which the equations are applied 16sis called a chaotic iteration strategy =-=[10]-=-. To find a local fixed point, the initial values for one equation are provided, and this drives the chaotic iteration strategy to apply other equations until the local fixed point is computed. Using ... |

113 |
Set-Based Analysis of ML Programs
- Heintze
- 1994
(Show Context)
Citation Context ...defined operationally. Some static analyses do not construct a flow graph. Wright [57] describes a soft type system for Scheme that is based on an extension of the Hindley-Milner type system. Heintze =-=[34]-=- describes a set-based analysis for ML that handles assignment and call/cc. For each expression in the input program, the analysis computes a set value that approximates the values to which the expres... |

105 | P.: Performance and evaluation of Lisp systems
- Gabriel
- 1985
(Show Context)
Citation Context ... can be slower but more accurate. 7.3 Experiments The restructured compiler was run on a series of 27 benchmarks. Fifteen of the benchmarks are the non-I/O benchmarks from the Gabriel benchmark suite =-=[29]-=-. The other twelve are described in Figure 7.1. The texer, softscheme, similix, ddd, and compiler benchmarks are constructed from existing software packages. The other seven benchmarks are in the publ... |

91 |
The interprocedural analysis and automatic parallelization of Scheme programs
- Harrison
- 1989
(Show Context)
Citation Context ...low analysis of higherorder languages [49]. A solution which builds more precise graphs is to combine the controland data-flow analyses into one flow analysis. This was the approach taken by Harrison =-=[32]-=-. Both Shivers and Harrison showed that the flow analysis of higher-order languages was feasible, and this was an important achievement. Work since then has identified several important aspects of the... |

73 | S.: A Unified Treatment of Flow Analysis in Higher-Order Languages
- Jagannathan, Weeks
- 1995
(Show Context)
Citation Context ... a fixed point. Also, their analyses are prototypes that do not handle the full language, while our analysis is completely implemented and can analyze arbitrary Scheme programs. Jagannathan and Weeks =-=[36]-=- describe an analysis for the polyvariant analysis of higherorder applicative programs that also accommodates side-effects and call/cc. Their analysis is parameterized over a polyvariance operator, bu... |

70 |
S.: Strictness analysis for higher-order functions
- Burn, Hankin, et al.
- 1986
(Show Context)
Citation Context ...press abstract interpreters for these languages denotationally in order to facilitate correctness proofs. While early applications were for first-order functional language, Burn, Hankin, and Abramsky =-=[12]-=- extended abstract interpretation to accommodate higher-order functions. 13sTheir work was based on Mycroft’s. Higher-order functions in the object language were modeled as functions in the semantic d... |

70 | A tour of Schism: a partial evaluation system for higher-order applicative languages
- Consel
- 1993
(Show Context)
Citation Context ...ion, register allocation, copy propagation, constant folding, automatic parallelization, and more. Flow analyses have also been used to justify sourceto-source transformations like partial evaluation =-=[6, 19]-=-, closure conversion [55], type check elimination [37], and touch elimination [25]. Transformations that require flow information are important, because they can transform a program written to solve a... |

51 | Back to direct style II: First–class continuations
- Danvy, Lawall
- 1992
(Show Context)
Citation Context ...ng continuations and procedures simplifies the semantics without any loss of essential information. Furthermore, after the analysis the direct-style version of the program may be recovered if desired =-=[22]-=-. 32s3.6 A CES machine for CPS A-normal form By making the continuation explicit at the source level, there is no need for the abstract machine to maintain a continuation. Assuming a function compile ... |

51 |
Dybvig. The Scheme Programming Language
- Kent
- 1996
(Show Context)
Citation Context ...re is known at nearly every call site, in practice. As we will see in the next section, this is not an acceptable restriction when analyzing higher-order languages. 6s2.2 Scheme-like languages Scheme =-=[17, 23]-=- is a lexically-scoped dialect of Lisp. The language is small compared to many traditional languages and other Lisp dialects, but despite its small size it is expressive. It supports, in particular, f... |

49 | The semantics of future and its use in program optimization
- Flanagan, Felleisen
- 1995
(Show Context)
Citation Context ...on, and more. Flow analyses have also been used to justify sourceto-source transformations like partial evaluation [6, 19], closure conversion [55], type check elimination [37], and touch elimination =-=[25]-=-. Transformations that require flow information are important, because they can transform a program written to solve a problem cleanly into a new program that, for example, is more efficient and fault... |

49 | Effective flow analysis for avoiding run-time checks
- Jagannathan, Wright
- 1995
(Show Context)
Citation Context ...ing, automatic parallelization, and more. Flow analyses have also been used to justify sourceto-source transformations like partial evaluation [6, 19], closure conversion [55], type check elimination =-=[37]-=-, and touch elimination [25]. Transformations that require flow information are important, because they can transform a program written to solve a problem cleanly into a new program that, for example,... |

48 | Efficient analyses for realistic off-line partial evaluation
- Bondorf, Jrgensen
- 1993
(Show Context)
Citation Context ...or not the loss in accuracy is acceptable depends on the application. Some examples of monovariant analyses include Shivers’s 0CFA analysis [49, 51], and Bondorf and Jorgensen’s binding-time analysis =-=[7]-=-. Examples of polyvariant analyses include Consel’s polyvariant binding-time analysis [3, 18] and Steensgaard’s [52] polyvariant closure analysis. A noteworthy category of polyvariant analyses include... |

44 | eds.): VLISP: A Verified Implementation of Scheme
- Guttman, Wand
- 1995
(Show Context)
Citation Context ...perator demonstrates that practical operators can be devised and deployed in practice. The framework is proved correct using a novel application of a proof technique known as storage layout relations =-=[30]-=-. It is a technique for reasoning about the correctness of one operational semantics with respect to another operational semantics. It was developed for proving the correctness of operational semantic... |

36 |
Polymorphic binding-time analysis
- Henglein, Mossin
- 1994
(Show Context)
Citation Context ...ure of the polyvariance coincides with the polymorphism in the input program. Examples of these analyses include a strictness analyzer for Haskell [38] and Henglein and Mossin’s binding-time analysis =-=[35]-=-. 2.4 Summary This chapter has presented an informal introduction to abstract interpretation and has reviewed the history of the field. The introduction was cast in the framework of the Cousots, who l... |

35 | Abstract Interpretation by dynamic partitioning
- Bourdoncle
- 1992
(Show Context)
Citation Context ...ating widening operators as a reliable, built-in component of fixed point algorithms is difficult. Consequently, only a few uses of widening operators have been reported in the literature. Bourdoncle =-=[9, 10]-=- has investigated their use, but his investigation is theoretical, and he does not report an implementation using his techniques. Mauborgne uses widening operators to accelerate a strictness analysis ... |

33 |
Strictness analysis --- a practical approach
- Clack, Jones
- 1985
(Show Context)
Citation Context ...imiting polyvariance, are designed to accelerate convergence to a fixed point, not necessarily the least, when the abstract domain is large or infinite. The frontiers algorithm Clack and Peyton Jones =-=[16]-=- introduced the frontiers algorithm for optimizing the abstract interpretation of first-order functional languages. They assumed a two-point abstract domain {⊥,⊤}, since their intended application was... |

26 |
The lambda calculus: its syntax and semantics. Number 103
- Barendregt
- 1985
(Show Context)
Citation Context ...nuation and compiles the expression in the context of the variable to which the continuation is bound. The translator operates in one pass over the input expression. It is also assumed to be hygienic =-=[5]-=- in the sense that variables and tags that are introduced do not clash with preexisting variables and tags. The procedure cps compiles A-normal form expressions to CPS A-normal form. call/cc is elimin... |

23 |
Abstracting timed preemption with engines
- Haynes, Friedman
- 1987
(Show Context)
Citation Context ...ect is that control jumps to the point at which the invoked continuation was captured. The primitive call/cc operator is sufficient for implementing a wide variety of control operators, e.g., engines =-=[33]-=- and threads. C does not have an operator comparable to the expressive power of first-class continuations. Traditional flow analysis techniques cannot support first-class procedures and continuations ... |

17 |
DDD - A Transformation system for Digital Design Derivation
- Bose
(Show Context)
Citation Context ...nter with TEX output softscheme 10,000 Wright’s soft typer [57] checking a 2,500 line program similix 7,000 self-application of the Similix [6] partial evaluator ddd 15,000 hardware derivation system =-=[8]-=- deriving Scheme machine [11] em-fun 490 EM clustering algorithm in functional style em-imp 460 EM clustering algorithm in imperative style dynamic 2,200 a dynamic type inferencer applied to itself gr... |

14 |
Cousot and Rhadia Cousot. Abstract Interpretation: A unified lattice model for static analysis of programs by construction or approximation of fixpoints
- Patrick
- 1977
(Show Context)
Citation Context ...mming languages. We then cover work that has been done on the implementation of abstract interpreters. 2.3.1 Foundations The foundations of abstract interpretation were developed by Cousot and Cousot =-=[20]-=-. In their work they considered a simple flowchart language. The language was given an operational semantics defined in terms of a standard semantic domain. Their idea was that 9sstatic properties of ... |

13 |
Similix Manual, System Version 5.0
- Bondorf
- 1993
(Show Context)
Citation Context ...ion, register allocation, copy propagation, constant folding, automatic parallelization, and more. Flow analyses have also been used to justify sourceto-source transformations like partial evaluation =-=[6, 19]-=-, closure conversion [55], type check elimination [37], and touch elimination [25]. Transformations that require flow information are important, because they can transform a program written to solve a... |

13 | The Scheme machine
- Burger
- 1994
(Show Context)
Citation Context ...eme 10,000 Wright’s soft typer [57] checking a 2,500 line program similix 7,000 self-application of the Similix [6] partial evaluator ddd 15,000 hardware derivation system [8] deriving Scheme machine =-=[11]-=- em-fun 490 EM clustering algorithm in functional style em-imp 460 EM clustering algorithm in imperative style dynamic 2,200 a dynamic type inferencer applied to itself graphs 500 counts the number of... |

13 |
Optimization Techniques for General Purpose Fixpoint Algorithms: Practical Efficiency for the Abstract Interpretation of Prolog
- Charlier, Degimbe, et al.
- 1993
(Show Context)
Citation Context ...st is needed. This observation is the heart of an optimization technique known as chaotic iteration [21]. This technique has been used in practice to get efficient abstract interpretations for Prolog =-=[14, 45]-=- and functional languages [3, 38]. The general idea of chaotic iteration is that given a system of continuous, monotone equations, each equation can be applied in any order provided that every equatio... |

13 | The VLISP Verified Scheme System
- Guttman, Swarup, et al.
- 1994
(Show Context)
Citation Context ...n we first describe the basic storage layout relations technique and then describe our revision. The goal of the VLISP project was to prove correct the Scheme 48 bytecode compiler and virtual machine =-=[30, 31]-=-. The correctness of the system was defined relative to a modified version of the denotational semantics for Scheme [17]. The correctness proof proceeded first by showing that the compiler generated c... |

11 | Fixpoint computation for polyvariant static analyses of higher-order applicative programs
- Ashley, Consel
- 1994
(Show Context)
Citation Context ...the heart of an optimization technique known as chaotic iteration [21]. This technique has been used in practice to get efficient abstract interpretations for Prolog [14, 45] and functional languages =-=[3, 38]-=-. The general idea of chaotic iteration is that given a system of continuous, monotone equations, each equation can be applied in any order provided that every equation is eventually applied an infini... |

9 |
Polyvariant binding-time analysis for higher-order, applicative languages
- Consel
- 1993
(Show Context)
Citation Context ...novariant analyses include Shivers’s 0CFA analysis [49, 51], and Bondorf and Jorgensen’s binding-time analysis [7]. Examples of polyvariant analyses include Consel’s polyvariant binding-time analysis =-=[3, 18]-=- and Steensgaard’s [52] polyvariant closure analysis. A noteworthy category of polyvariant analyses includes those for polymorphic functional languages, for which the nature of the polyvariance coinci... |

8 |
Dybvig. An efficient implementation of multiple return values in scheme
- Ashley, Kent
- 1994
(Show Context)
Citation Context ...anguages. A semantics that supports call/cc must make a continuation available for reification. Thus the semantics can be extended to accommodate other control features such as multiple return values =-=[4]-=-. The choice of primitives admits but abstracts the creation of aggregate data structures and mutation. A semantics that can give meaning to these features must therefore maintain an explicit store. T... |

8 |
Dybvig. Three Implementation Models for Scheme
- Kent
- 1987
(Show Context)
Citation Context ...continuations. Shiver’s analysis handled first-class continuations by converting the input program to continuation-passing style (CPS). Assignments were eliminated by performing assignment conversion =-=[24]-=-: assigned variables were bound to heap-allocated cells, and references and assignments were translated accordingly. Data structures were accommodated by the analysis, but not with any accuracy. In fa... |

5 |
Efficient strictness analysis of Haskell
- Jensen, Hjaeresen, et al.
- 1994
(Show Context)
Citation Context ...the heart of an optimization technique known as chaotic iteration [21]. This technique has been used in practice to get efficient abstract interpretations for Prolog [14, 45] and functional languages =-=[3, 38]-=-. The general idea of chaotic iteration is that given a system of continuous, monotone equations, each equation can be applied in any order provided that every equation is eventually applied an infini... |

3 | Well-founded touch optimization for futures
- Flanagan, Felleisen
(Show Context)
Citation Context ...nsensitive with respect to assignment. The hybrid algorithm used to implement the store in the abstract machine combines some elements of Flanagan and Felleisen’s implementation of set-based analysis =-=[26]-=-. In there implementation data structures are used to represent locations in a global environment that corresponds to our store. Our hybrid algorithm differs by switching representations for assigned ... |

1 |
On the design of generic abstract interpretation frameworks
- Charlier, Hentenryck
- 1992
(Show Context)
Citation Context ...gory consists of dynamic dependency algorithms, which collect information on-thefly to determine the dependent equations [3]. The most sophisticated algorithms combine techniques from both categories =-=[14, 15, 53]-=-. Widening Cousot and Cousot’s original formulation of abstract interpretation permitted the use of abstract domains with infinite height. The problem is that algorithms to find fixed points do not te... |

1 |
Cousot and Rhadia Cousot. Static determination of dynamic properties of recursive procedures
- Patrick
- 1978
(Show Context)
Citation Context ...ther equations in the equation set. In other words, only a local fixed point on the points of interest is needed. This observation is the heart of an optimization technique known as chaotic iteration =-=[21]-=-. This technique has been used in practice to get efficient abstract interpretations for Prolog [14, 45] and functional languages [3, 38]. The general idea of chaotic iteration is that given a system ... |

1 |
Higher-order functional graphs
- Jones, Rosendahl
(Show Context)
Citation Context ...herefore, procedures are modeled as closures. Rosendahl [46] described how to do this in the framework of chaotic iteration, but the basic idea is older, going back to work on minimal function graphs =-=[39, 40]-=- and Young’s pending analysis [59]. The use of chaotic iteration opens the door to a number of possible iteration strategies. Many strategies are based on dependency analysis to determine which equati... |