Preserving Information during Online Partial Evaluation

The degree to which a partial evaluator can specialize a source program depends on how accurately the partial evaluator can represent and maintain information about runtime values. Partial evaluators always lose some accuracy due to their use of finite type systems; however, existing partial evaluation techniques lose information about runtime values even when their type systems are capable of representing such information. This paper describes two sources of such loss in existing specializers, solutions for both cases, and the implementation of these solutions in our partial evaluation system, FUSE.

[1]  Anders Bondorf,et al.  Automatic Autoprojection of Higher Order Recursive Equations , 1990, Sci. Comput. Program..

[2]  Erik Ruf,et al.  Opportunities for Online Partial Evaluation , 1992 .

[3]  Peter Sestoft,et al.  Replacing function parameters by global variables , 1989, FPCA.

[4]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[5]  Daniel W. Weise Graphs as an Intermediate Representation for Partial Evaluation , 1990 .

[6]  T. Katayama,et al.  A Type Inference System for FP Programs , 1990 .

[7]  Andrew Berlin A Compilation Strategy for Numerical Programs Based on Partial Evaluation , 1989 .

[8]  Karel De Vlaminck,et al.  Program Bifurcation for a Polymorphic Typed Functional Language , 1991, PEPM.

[9]  Alexander Aiken,et al.  Static type inference in a dynamically typed language , 1991, POPL '91.

[10]  Anders Haraldsson A program manipulation system based on partial evaluation , 1977 .

[11]  R. Schooler,et al.  PARTIAL EVALUATION AS A MEANS OF LANGUAGE EXTENSIBILITY , 1984 .

[12]  Craig Chambers,et al.  Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches , 1991, ECOOP.

[13]  Erik Ruf,et al.  Using Types to Avoid Redundant Specialization , 1991, PEPM.

[14]  Olin Shivers,et al.  Control-flow analysis of higher-order languages of taming lambda , 1991 .

[15]  Sergei A. Romanenko Arity Raiser and its Use in Program Specialization , 1990, ESOP.

[16]  Erik Ruf,et al.  Computing Types During Program Specialization , 1990 .

[17]  Thomas Johnsson,et al.  Lambda Lifting: Treansforming Programs to Recursive Equations , 1985, FPCA.

[18]  Craig Chambers,et al.  Iterative type analysis and extended message splitting; optimizing dynamically-typed object-oriented programs , 1990, PLDI '90.

[19]  Peter Sestoft,et al.  The structure of a self-applicable partial evaluator , 1985, Programs as Data Objects.

[20]  Charles Consel Analyse de programmes, evaluation partielle et generation de compilateurs , 1989 .

[21]  Olivier Danvy,et al.  For a Better Support of Static Data Flow , 1991, FPCA.

[22]  Williams Ludwell Harrison,et al.  The interprocedural analysis and automatic parallelization of Scheme programs , 1990, LISP Symb. Comput..

[23]  Charles Consel,et al.  Binding time analysis for high order untyped functional languages , 1990, LISP and Functional Programming.

[24]  Siau-Cheng Khoo,et al.  Compiling inheritance using partial evaluation , 1991 .

[25]  Siau-Cheng Khoo,et al.  Parameterized partial evaluation , 1991, PLDI '91.

[26]  Anders Bondorf,et al.  Automatic Autoprojection of Recursive Equations with Global Variables and Abstract Data Types , 1991, Sci. Comput. Program..

[27]  Olivier Danvy,et al.  Partial Evaluation of Pattern Matching in Strings , 1989, Inf. Process. Lett..

[28]  Peter Sestoft,et al.  An experiment in partial evaluation: the generation of a compiler generator , 1985, SIGP.

[29]  John Hughes,et al.  Towards Binding-Time Improvement for Free , 1990, Functional Programming.

[30]  Erik Ruf,et al.  Automatic Online Partial Evaluation , 1991, FPCA.

[31]  Daniel Weise,et al.  An Empirical Study of an Abstract Interpretation of Scheme Programs , 1992 .

[32]  William D. Clinger,et al.  Revised3 report on the algorithmic language scheme , 1986, SIGP.

[33]  M.N. Sastry,et al.  Structure and interpretation of computer programs , 1986, Proceedings of the IEEE.

[34]  Neil D. Jones,et al.  Data flow analysis of applicative programs using minimal function graphs , 1986, POPL '86.

[35]  Neil D. Jones,et al.  A partial evaluator for the untyped lambda-calculus , 1991, Journal of Functional Programming.

[36]  Jr. Guy L. Steele,et al.  Rabbit: A Compiler for Scheme , 1978 .