29 citations found. Retrieving documents...
P. Sestoft. Automatic Call Unfolding in a Partial Evaluator. In D. Bjrner, A. P. Ershov, and N.D. Jones, editors, Partial Evaluation and Mixed Computation, 1988.

 Home/Search   Document Not in Database   Summary   Related Articles   Check  

This paper is cited in the following contexts:

First 50 documents

A Partial Evaluator for the Untyped Lambda Calculus - Gomard, Jones (1991)   (93 citations)  (Correct)

....to restrict the number of references to the formal parameter in functions of type code t to at most one. To be sure to preserve termination properties under call by value we would have to insist on exactly one reference. Quite similar problems are well known from other partial evaluators. In [Sestoft 1988] a method to detect which parts of a program should be made residual to avoid duplication of function calls is presented. In the Similix project [Bondorf and Danvy 1989, Bondorf 1990] a let expression is inserted whenever there is a risk of duplication. 4 Experiments with Mix The partial ....

P. Sestoft, Automatic Call Unfolding in a Partial Evaluator, in Partial Evaluation and Mixed Computation, edited by D. Bjrner, A.P. Ershov, and N.D. Jones, pp. 485-506, North-Holland, 1988.


Sharing of Computations - Amtoft (1993)   (1 citation)  (Correct)

....Two sources for non termination exist: 1. when generating the code for a specialized function, an attempt is made to unfold infinitely often. 2. an attempt is made to specialize a function with respect to infinitely many values. These problems have been attacked in several ways, e.g. In [Ses88] 1) is avoided by testing for cycles in the call graph (this technique being potentially very space consuming) but (2) remains a possibility. In SIMILIX [BD91] one decreases the risk of (1) by not unfolding dynamic tests, i.e. tests whose outcome cannot be decided by the 26 static ....

Peter Sestoft. Automatic call unfolding in a partial evaluator. In D. Bjrner, A.P. Ershov, and N.D. Jones, editors, Partial Evaluation and Mixed Computation, pages 485--506. North-Holland, 1988.


A Constraint-based Partial Evaluator for Functional Logic.. - Lafave (1998)   (6 citations)  (Correct)

....Most specialisation algorithms for functional programs restrict the transformation of non linear expressions in order to guarantee an improvement in efficiency for the residual program. This restriction prevents duplicating computations during specialisation as in the following example from [Ses88a, Sr96] Example 4.8.13 Consider the following program to convert lists into trees. FUNCTION ListToTree : List(a) Tree(a) ListToTree( Leaf. ListToTree( x xs] Br(ListToTree(xs) FUNCTION Br : Tree(a) Tree(a) Br(x) Branch(x,x) Partial evaluation of this program with ....

....danger of duplicating computations by unfolding non linear expressions has been addressed in many different ways. In the development of Mix, a static analysis called duplication analysis identifies the non linear arguments of a term and restricts the unfolding of the term to its linear subterms [Ses88a] Non linearity is not a problem in basic deforestation, since linearity is a condition of treeless programs [Wad90] In positive supercompilation, the non linear arguments are generalised using let expressions as above [Sr96] 4.9 Discussion In this section, the algorithm for constraint based ....

P. Sestoft. Automatic Call Unfolding in a Partial Evaluator. In D. Bjrner, A. P. Ershov, and N.D. Jones, editors, Partial Evaluation and Mixed Computation, 1988.


Fine-Grain Partial Evaluation of Intermediate Code from.. - Durand, Sherman, Strandh (1991)   (Correct)

....much the way the optimization level is given to C compilers. In the latter case n = 3 is a reasonable default. Better strategies exist, for example unfolding until a reduction rule is re applied, but we have not implemented them. Note that the usual unfolding strategies (c.f. Sestoft s work in [Ses88]) aren t sufficient because the parameters of a call are not all the only inputs they are only the roots of the inputs, since the body of the call can contain down instructions. 6 Implementation of the partial evaluator We have an experimental implementation of fine grained partial evaluation ....

Peter Sestoft. Automatic call unfolding in a partial evaluator. In IFIP TC2 Workshop on Partial Evaluation and Mixed Computation, 1988.


Call Unfolding Strategies for Equational Logic Programs - David Sherman Robert (1992)   (Correct)

....1 2201H, with partial support from NSF grants CCR 9016905 and CDA 8822657. y Partially funded by the ESPRIT basic research working group Computing by Graph Transformations . Our presentation here is in the same vein as Sestoft s consideration of call unfolding for functional languages in [Ses88]. In comparison with approaches for general functional languages, we have a somewhat degenerate case. Instead of calls to many functions, we start with calls to just one label. We have no partial input to these calls other than the values constructed in the original program. We have no notion of ....

Peter Sestoft. Automatic call unfolding in a partial evaluator. In Bjrner, Ershov, and Jones, editors, Partial Evaluation and Mixed Computation, pages 485--506. Elsevier, 1988.


Better Consumers for Program Specializations - Chin, Khoo (1996)   (4 citations)  (Correct)

....Although it may appear that the original call (which can be unfolded) has been replaced by a call to a new intermediate function instead, further unfolding can be easily performed immediately after the entire transformation process is completed. This technique is usually called post unfolding [Ses95]. 16 The Journal of Functional and Logic Programming 1996 4 Chin and Khoo Better Consumers for Program Specializations x5.2.2 Procedure 1 (Rules for Define Unfold Fold Transformation) u t ) T F Jf aK fs ps j terminateCriteria (f; a) f a; where f def = fp i ) t i g n i=1 2 fs ....

P. Sestoft. Automatic call unfolding in a partial evaluator. In Mycroft [NS95], pages 485--506.


Generating Transformers for Deforestation and Supercompilation - Glück, Jørgensen (1994)   (5 citations)  (Correct)

....can be determined automatically, but this depends on the strategy of the partial evaluator. There are two well known methods: i) structural induction and (ii) dynamic conditionals. The Mix system inserts memoization points when function calls do not satisfy the structural induction condition [Ses88], i.e. the size of a static argument may increase. This is clearly the case on the right hand sides of the rules (3.3) and (3.6) where the syntactic argument f is replaced by the expression e f . That is, this strategy automatically ensures the termination of the generated transformer. Similix ....

Peter Sestoft. Automatic call unfolding in a partial evaluator. In Dines Bjrner, Andrei P. Ershov, and Neil D. Jones, editors, Partial Evaluation and Mixed Computation, pages 485--506. North-Holland, 1988.


Constraints to Stop Higher-Order Deforestation - Seidl, Sørensen (1997)   (10 citations)  (Correct)

....program into an exponential time program. In Wadler s [55] Hamilton s [23] and Marlow s [35] approaches this is avoided by considering only linear programs, i.e. programs consisting of functions that do not duplicate their arguments. Some weaker restrictions are adopted in partial evaluation [46, 5] and in work on firstorder deforestation [21] Second, there is the problem of code duplication. Unrestrained unfolding may increase the size of a program dramatically. In principle the size of a program does not affect its running time, but in practice this is not always true. Third, ....

P. Sestoft. Automatic call unfolding in a partial evaluator. In Bjrner et al. [4], pages 485--506.


EM code Semantics, Analysis, and Optimization - Sherman (1992)   (Correct)

....us to produced specialized versions of the program for the reinvocations. We can remove any construction whose entire effect is accounted for by program state in the specialized version, giving us considerable savings in running time. Following the terminology of Jones [Jon88] and Sestoft [Ses88] our compiletime transformation of an EM code program comprises 1. unfolding of the automaton reinvocation, exposing instructions from the body of the call; 2. a polyvariant specialization of the unfolded call with respect to the partial input given by the construction(s) and inspections ....

....they may be treated specially. In traditional languages the entire body of a call is unfolded at once this is often called inlining or macro expansion. This view of the body of a call as one unit to be unfolded or left alone is also seen in unfolding for partial evaluation (see, for example, Ses88] In EM code, such a treatment of the entire body of a call is both unnecessary and undesirable. It is unnecessary because our definition of the semantics of EM code permits a more flexible treatment that we call fine grained unfolding. It is undesirable because the bodies of calls in typical ....

Peter Sestoft. Automatic call unfolding in a partial evaluator. In Bjørner, Ershov, and Jones, editors, Partial Evaluation and Mixed Computation, pages 485--506. Elsevier, 1988.


Efficient Multi-level Generating Extensions for Program.. - Glück, Jørgensen (1995)   (2 citations)  (Correct)

....with respect to the static arguments arg. This method is known as polyvariant program point specialization because the same program point may be specialized with respect to different static arguments. Two wellknown methods for automatically inserting specialization points are inductive variables [Ses88], and dynamic conditionals [BD91] 3.2 The Starting Point Observation 1: Annotated Program = Generating Extension [Hol89] An annotated program p ann can be viewed as a generating extension of program p. It is only a question of the language in which one considers p ann as program: static ....

Peter Sestoft. Automatic call unfolding in a partial evaluator. In Dines Bjørner, Andrei P. Ershov, and Neil D. Jones, editors, Partial Evaluation and Mixed Computation, pages 485--506. North-Holland, 1988.


BTA Termination Using CFL-Reachability - Das, Reps (1996)   (1 citation)  (Correct)

....static and produces residual code for the statements marked dynamic. A known problem with off line partial evaluators that use congruence based binding time analysis is that they may fall into an infinite loop or an infinite recursion because of static infinite computations in a subject program [5, 13] (e.g. infinite loops that are completely static. In this paper, we develop a BTA algorithm that marks every static infinite computation as dynamic , extending the work of Holst [4] and of Glenstrup and Jones [3] As pointed out by Jones in [6] partial evaluation involves a basic tradeoff ....

P. Sestoft. Automatic call unfolding in a partial evaluator. In D. Bjørner, A.P. Ershov, and N.D. Jones, editors, Partial Evaluation and Mixed Computation, pages 485--506. Amsterdam: North-Holland, 1988.


A Positive Supercompiler - Sørensen, Glück, Jones (1993)   (3 citations)  (Correct)

....to a non linear right hand side can cause function call duplication, transformation can change a polynomial time program into an exponential time program. In Wadler s deforestation (1990) this is avoided by considering only linear terms. Some weaker restrictions are adopted in partial evaluation (Sestoft, 1988; Bondorf, 1990) and other work on deforestation (Chin, 1992; Hamilton, 1993) We consider this an issue in its own right which should be dealt with separately, and is beyond the scope of this paper. The problem does not turn up in the examples we consider. Second, there is the problem of code ....

Sestoft, P. 1988. Automatic call unfolding in a partial evaluator. In Partial Evaluation and Mixed Computation, Bjørner D., Ershov A.P. and Jones N.D. (eds.), pages 485-- 506, North-Holland.


For a Better Support of Static Data Flow - Consel, Danvy   (51 citations)  (Correct)

....To examine this issue let us compare termination of partial evaluation for direct style and CPS programs in a typical case. Consider a recursive function with an induction variable bound dynamically. 14 If this function is expressed in direct style, then, as described by Sestoft, for example [41], it should be specialized to delay recursion until run time (i.e. when the value of the induction variable is available) If this function is expressed in CPS, then in addition to its specialization, the continuation has to be generalized. Indeed, the continuation may accumulate computations and ....

P. Sestoft. Automatic call unfolding in a partial evaluator. In D. Bjørner, A. P. Ershov, and N. D. Jones, editors, Partial Evaluation and Mixed Computation. NorthHolland, 1988.


Towards Unifying Partial Evaluation, Deforestation.. - Sørensen, Glück, Jones (1994)   (Correct)

....is given in [Sor94b] Second, the output of W should be at least as efficient as the input. Since rewriting to a nonlinear right hand side can cause function call duplication, this will not generally hold unless appropriate precautions are taken. The problem is well known in partial evaluation [Ses88, Bon90, Jon93] and deforestation [Wad88, Chi93] Essentially the same principles could be applied to W, see [Sor94b] Third, W should always terminate. The algorithm W does, in fact, not always terminate. Techniques to ensure termination of W for all programs are studied in [Sor94b] 4 KMP test of positive ....

P. Sestoft. Automatic Call Unfolding in a Partial Evaluator. In Partial Evaluation and Mixed Computation. Eds. A.P Ershov, D. Bjørner, N.D. Jones, pp.485506, North-Holland 1988.


A New Means of Ensuring Termination of Deforestation - Sørensen (1993)   (Correct)

....bound to one of the v s will be needed. 2 So, an ambitious solution to the problem would conduct an analysis of the source program p, discovering whether the problem would appear during application of G to p. This has been done in partial evaluation under the names of duplication risk analysis [Ses88] and abstract occurrence counting 1 We assume that the reader is familiar with the difference between call by name on one hand and call by need or lazy evaluation on the other hand; if he isn t, he may wish to consult chapter 6 of [Bir88] analysis [Bon90] Incidentally, the way the ....

Peter Sestoft. Automatic Call Unfolding in a Partial Evaluator. In Partial Evaluation and Mixed Computation. Eds. A. P. Ershov, D. Bjrner & N. D. Jones, North-Holland, 1988.


Constraints to Stop Deforestation - Seidl, Sørensen (1998)   (8 citations)  (Correct)

....First, transformation can change a polynomial time program into an exponentialtime program by computation duplication. As mentioned, this may be avoided by considering only linear programs, or programs satisfying similar semantic conditions. Similar problems are addressed in partial evaluation [53,4]. Second, unfolding may increase the size of a program dramatically by code duplication. In principle the size of a program does not affect its running time, but in practice this is not always true. Third, transformation steps can loose laziness and full laziness, as is described in detail by ....

P. Sestoft. Automatic call unfolding in a partial evaluator. In D. Bjørner, A.P. Ershov, and N.D. Jones, editors, Partial Evaluation and Mixed Computation, pages 485--506, Amsterdam, 1988. North-Holland.


Specializing Code via Partial Evalutaion - Krishna (1994)   (Correct)

....which a partial evaluator should avoid, preferably automatically. Residualize: Techniques for detecting expressions that are best left in their original or semispecialized form. Oversimplification can be both expensive and foolhardy. A residualize decision can involve two kinds of decisions [Ses87] ffl suspend a call foo (x y z) can be converted to a call foo S (x z) in case the second argument is known. ffl eliminate a call all of who s arguments values are known at compile time can be replaced by the body of the call. Complete unfolding is one way to eliminate calls. ....

....data values are known. Fuse however, unlike Berlin s partial evaluator, addresses termination and code duplication issues. The degree of specialization in Fuse, as a result, is much more. It has a new automatic call unfolding strategy [RWCS91] which is much less conservative than that of [Ses87] Some of the more advanced code duplication prevention strategies are under construction right now and will be the part of Erik Ruf s thesis [Ruf92] The program is now in a graphical form and needs to be translated into residual code. This is the second phase of Fuse. The issues here are very ....

Peter Sestoft. Automatic Call Unfolding in a Partial Evaluator, chapter in Partial Evaluation and Mixed Computation, Proceedings of the IFIP TC2 Workshop [BEJ87], pages 485--506. North-Holland, 1987.


Implementing Memoization for Partial Evaluation - Thiemann (1997)   (1 citation)  (Correct)

....a termination analysis for higher order specialization. Our current approach is orthogonal as it builds on incremental specialization. Intricate call graph analyses have been developed to find a set of memoized calls which is as small as possible but still ensures terminating specialization [19, 31, 32]. Our algorithm to insert sp functions is a variation of Bondorf and Danvy s algorithm [5, 7] which works satisfactory in practice. The idea of specializing data types to avoid type problems has been used before, for example by Steele [34] 7 Conclusions We have presented four contributions to ....

Peter Sestoft. Automatic call unfolding in a partial evaluator. In Bjørner et al. [4], pages 485--506.


Computing Types During Partial Evaluation - Weise, Ruf (1990)   (1 citation)  (Correct)

....On problem that needs solving is dead code elimination on data structures whose slots are not accessed by the specialized program. Our methods cause some slots to become useless, but they are still constructed at runtime. We want to investigate a combination of CPS conversion and arity raising [18]. These techniques are important for further boosting the efficiency of specialized programs. For example, the specialized program presented in Appendix C would be helped by CPS conversion plus arity raising. This would eliminate those parts of the store that are no longer needed, and disperse ....

P. Sestoft. Automatic call unfolding in a partial evaluator. In D. Bjørner, A. P. Ershov, and N. D. Jones, editors, Partial Evaluation and Mixed Computation, pages 485--506. North-Holland, 1988.


Towards a New Perspective on Partial Evaluation - Katz, Weise (1992)   (7 citations)  (Correct)

....to correctly terminate more often. 2. 5 Equivalence Classes and Termination We propose using equivalence classes based upon use information as our sole termination method, unlike previous methods that appeal to dynamic conditionals, such as Fuse and Similix, use induction methods, such as Mix [6], use finiteness criteria, such as [3] or use manual annotations, such as Schism [2] It is vital that we construct the largest classes possible without degrading residual code quality. In particular, to ensure termination, it is important that the equivalence class of a specialization not be ....

Peter Sestoft. Automatic call unfolding in a partial evaluator. In D. Bjørner, A. P. Ershov, and N. D. Jones, editors, Partial Evaluation and Mixed Computation, pages 485--506. North-Holland, 1988.


Partial Evaluation: Principles and Perspectives - Consel, Danvy (1993)   (3 citations)  (Correct)

....Similix, Schism, and Fuse. In the Mix system, the problem was first treated by inserting annotations by hand in the source program, to indicate which call should be unfolded and which should be residualized [68] Later on, static analyses were devised to annotate first order programs automatically [102]. The use of binding time analysis enables one to insert more accurate annotations. The strategy adopted in Similix, for example, is very simple and appears to be applicable in most situations in an automatic way: dynamic conditional expressions (i.e. conditional expressions whose test do not ....

....is too conservative, the residual program may contain many occurrences where further specialization actually would pay off. Care must also be taken when unfolding function calls to avoid duplicating computations. This can lead to the specialization of a linear program into an exponential one [102]. This problem is met in C with the following macro. #define inlinedplus(x) x x; Applying inlinedplus, for example, to a function call can make a linear time looking code run in exponential time. 6 Some Concrete Applications This section illustrates how partial evaluation can be used to ....

P. Sestoft. Automatic call unfolding in a partial evaluator. In Bjørner et al. [9].


Assessing the Partial Evaluation Technology and its Applicability.. - Gupta (1991)   (Correct)

....for example, knowing that car descends into a list, whereas cons builds it. Some recent systems such as SCHISM and SIMILIX [10, 7] can even incorporate knowledge about user defined abstract datatypes into their termination strategy. MIX uses this scheme as its primary strategy for call unfolding [26]. It works well for structured data that is accessed by recursive descent, for instance, a program being interpreted by a recursive descent interpreter. 2. Detecting Speculative Control An important observation is that any non trivial recursive loop during unfolding must contain at least one ....

....3.5 Duplication Unfolding and specialization of a procedure naturally mean that its body needs to be copied and the call arguments are to be substituted in. A naive substitution may lead to duplication of code that can affect the space or the time complexity of the residual program drastically [26]. There are two ways to avoid this problem. One can either detect where substitution may lead to duplication and then abandon such unfolding or specialization, or one can maintain the sharing of computation even after substitution using appropriate intermediate representation such as graphs. The ....

[Article contains additional citation context not shown here]

Peter Sestoft. Automatic Call Unfolding in a Partial Evaluator. In D. Bjorner, A.P. Ershov, and N.D. Jones, editors, Partial Evaluation and Mixed Computation, pages 485--506. NorthHolland, 1988.


A Constraint-based Partial Evaluator for Functional - Logic Programs And   (Correct)

No context found.

P. Sestoft. Automatic Call Unfolding in a Partial Evaluator. In D. Bjrner, A. P. Ershov, and N.D. Jones, editors, Partial Evaluation and Mixed Computation, 1988.


On the Specialization of Online Program Specializers - Ruf, Weise (1992)   (7 citations)  (Correct)

No context found.

P. Sestoft. Automatic call unfolding in a partial evaluator. In D. Bjrner, A. P. Ershov, and N. D. Jones, editors, Partial Evaluation and Mixed Computation, pages 485--506. NorthHolland, 1988. 39


The Generation of a Higher-Order Online Partial Evaluator - Thiemann, Glück (1995)   (1 citation)  (Correct)

No context found.

P. Sestoft. Automatic call unfolding in a partial evaluator. In D. Bj#rner, A. P. Ershov, and N. D. Jones, editors, Partial Evaluation and Mixed Computation, pages 485506, Amsterdam, 1988. North-Holland.

First 50 documents

Online articles have much greater impact   More about CiteSeer.IST   Add search form to your site   Submit documents   Feedback  

CiteSeer.IST - Copyright Penn State and NEC