12 citations found. Retrieving documents...
Koen De Bosschere, Saumya Debray, David Guneman, and Sampath Kannan. Call forwarding: a simple interprocedural optimization technique for dynamically typed languages. In POPL '94: 21ST ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 409--420, 1994.

 Home/Search   Document Details and Download   Summary   Related Articles   Check  

This paper is cited in the following contexts:
Lambda-Splitting: A Higher-Order Approach to Cross-Module.. - Blume, Appel (1997)   (22 citations)  (Correct)

....3 this code will be duplicated in each one. Therefore, our algorithm never places expansive code or code that is deemed too big into the i portion of a split. The idea of splitting functions into pieces can also be used to facilitate intramoduler optimizations like call forwarding [BDGK94] or partial inlining [Gou94] 4.1 The basic algorithm In SML NJ a compilation unit translates into a sequence of nested variable bindings (let bindings) some of which can be recursive. The rightmost body of the rightmost let expression then builds a record of exported values. The entire ....

Koen De Bosschere, Saumya Debray, David Guneman, and Sampath Kannan. Call forwarding: a simple interprocedural optimization technique for dynamically typed languages. In POPL '94: 21ST ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 409--420, 1994.


SLDR-Resolution: Parallelizing Structural Recursion in Logic.. - Millroth (1994)   (6 citations)  (Correct)

....in the Introduction, implementing recursion by iteration in this way can avoid redundant type checking and other overheads associated with the recursive procedure calls. However, this effect can also be obtained by the call forwarding optimization technique, described by De Bosschere et al. [5], where different entry points of a procedure are derived using information at the call site. The distinguishing feature of SLDR resolution is rather that it allows new, and potentially very efficient, ways of executing recursive logic programs in parallel, since both the head unification phase ....

K. De Bosschere, S.K. Debray, D. Gudeman & S. Kannan, Call Forwarding: A simple interprocedural optimization technique for dynamically typed languages, Proc. 21st ACM Symp. Principles of Programming Languages, 1994.


Control flow analysis of Prolog (extended remix) - Lindgren (1995)   (Correct)

....for Prolog and related languages have so far mostly taken a predicate level view of compilation, even if global analysis has been used to improve the compilation of each predicate, and concentrated their efforts on reducing the cost of primitive operations. Exceptions include call forwarding [3]. Perhaps unsurprisingly, the greatest improvements have been in smaller programs, where primitive operations are relatively common and the compiler has some scope to improve sequences of primitives. However, procedure calls have mainly been handled as in the WAM [18] an exception is the ....

K. De Boesschere, S. Debray, D. Gudeman, S. Kannan, Call forwarding: a simple interprocedural optimization technique for dynamically typed languages, in ACM Symposium on Principles of Programming Languages 1994.


Control flow analysis of Prolog - Lindgren (1995)   (1 citation)  (Correct)

....for Prolog and related languages have so far mostly taken a predicate level view of compilation, even if global analysis has been used to improve the compilation of each predicate, and concentrated their efforts on reducing the cost of primitive operations. Exceptions include call forwarding [3]. Perhaps unsurprisingly, the greatest improvements have been in smaller programs, where primitive operations are relatively common and the compiler has some scope to improve sequences of primitives. However, procedure calls have mainly been handled as in the WAM [17] an exception is the ....

K. De Boesschere, S. Debray, D. Gudeman, S. Kannan, Call forwarding: a simple interprocedural optimization technique for dynamically typed languages, in ACM Symposium on Principles of Programming Languages 1994.


Compilation Techniques for Prolog - Lindgren (1996)   (Correct)

....and which should be returned in memory. It may be interesting to consider this for our benchmark set, and to possibly use multiple versions of a predicate for different call sites. The Bigot GudemanDebray algorithm uses a single version per predicate. Gudeman, De Bosschere, Debray and Kannan [23] have defined call forwarding as a way to hoist type tests out of loops or in general to elide type tests when the call site can statically decide tests in the callee. As shown in the nreverse example, our polyvariant transformation occasionally generates crude call forwarding by breaking out ....

....for Prolog and related languages have so far mostly taken a predicate level view of compilation, even if global analysis has been used to improve the compilation of each predicate, and concentrated their efforts on reducing the cost of primitive operations. Exceptions include call forwarding [23]. Perhaps unsurprisingly, the greatest improvements have been in smaller programs, where primitive operations are relatively common and the compiler has some scope to improve sequences of primitives. However, procedure calls have mainly been handled as in the WAM [159] an exception is the ....

[Article contains additional citation context not shown here]

K. De Bosschere, S.K. Debray, D. Gudeman, S. Kannan, Call forwarding: A simple interprocedural optimization technique for dynamically typed languages, in Proc. Principles of Programming Languages, ACM Press, 1994. f18, 40, 63, 69g


Generalized Boxings, Congruences and Partial Inlining - Goubault   (Correct)

....We solve the problem by inlining functions partially, as we show in Section 5. This can be seen as an efficient way of doing deforestation [26] This will, by the way, enable us to correct a defect in Leroy s treatment of higher order functions. Our technique is quite close to call forwarding [7]. We use a simpler scheme in that instructions are not reordered: we feel this should be enough for ML like languages, although for dynamically typed languages, we agree with the authors that reordering is certainly needed. In contrast, whereas call forwarding moves actions done on entry to ....

....is that, contrarily to Leroy, we cannot optimize across modules, as we cannot optimize calls unless we know the code of the called function; Leroy only needs their specification (their type) and so can do better in this case. 5. 1 Partial Inlining Our technique is similar to call forwarding [7]: copy entry actions in a procedure f to just before each of its call sites, and modify f so as to skip these actions. Additionally, we do the converse ( return backwarding ) copy exit actions of f to just after its call sites, and modify f so as to skip these exit actions. To gain enough ....

[Article contains additional citation context not shown here]

K. De Bosschere, S. Debray, D. Gudeman, and S. Kannan. Call forwarding: A simple interprocedural optimization technique for dynamically typed languages. In 21st PoPL, pages 409--420, 1994.


Hierarchical Modularity And Intermodule Optimization - Blume (1997)   (2 citations)  (Correct)

....carefully because it will be duplicated in each one. Therefore, the algorithm never places expansive code and code that is deemed too big into the i portion of a split. The idea of splitting functions into pieces can also be used to facilitate intramodular optimizations like call forwarding [BDGK94] or partial inlining [Gou94] The basic algorithm In SML NJ a compilation unit translates into a sequence of nested variable bindings (letbindings) some of which can be recursive. The rightmost body of the rightmost let expression then builds a record of exported values. The entire ....

Koen De Bosschere, Saumya Debray, David Guneman, and Sampath Kannan. Call forwarding: a simple interprocedural optimization technique for dynamically typed languages. In POPL '94: 21ST ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 409--420, 1994.


A Simple Approach To Supporting Untagged Objects In.. - Bigot, Debray   (1 citation)  Self-citation (Debray)   (Correct)

....it as appropriate, e.g. to carry out representation conversion and pass the result in an untagged register if this is possible, and to fail otherwise. Basically, this amounts to hoisting the type test for from the callee to the call site, and can be thought of as an instance of call forwarding [13] it converts what would be failure inside the called procedure to failure at the call site. Alternatively, the code generated for the callee can have multiple entry points, corresponding to different sets of arguments that need to be untagged: this has the advantage of not duplicating the ....

....entry points (see Section 3.1) can be used to avoid the overhead of passing tagged values across module boundaries where possible. An alternative would be to generate multiple entry points for procedures that use untagged values, and use optimizations such as code hoisting and call forwarding [13] at link time (see, e.g. 14, 29] to redirect calls so as to avoid unnecessary tagging and untagging where possible. While these techniques can be used to avoid passing untagged values into a procedure, neither supports untagged return values in a straightforward way. Given the discussion of ....

K. De Bosschere, S. K. Debray, D. Gudeman, and S. Kannan, "Call Forwarding: A Simple Interprocedural Optimization Technique for Dynamically Typed Languages ", Proc. 21st. ACM Symp. on Principles of Programming Languages, Jan. 1994, pp. 409--420.


alto: A Link-Time Optimizer for the DEC Alpha - Muth, Debray, Watterson (1998)   (9 citations)  Self-citation (De bosschere Debray)   (Correct)

....that some possible optimizationsmay be missed because they depend on propagating information across procedure boundaries. This is addressed to some extent in procedurecall intensive programming languages, such as Prolog and Scheme, that rely greatly on inter procedural analyses and optimizations [11, 24, 32, 36]; recent years have also seen a great deal of interest in inter procedural analyses for languages like C (see, for example, 13, 14, 25, 29, 38] However, even here the scope of the possible analyses and optimizations are limited to code that is available for examination at compile time. This ....

K. De Bosschere, S. K. Debray, D. Gudeman, and S. Kannan, "Call Forwarding: A Simple Interprocedural Optimization Technique for Dynamically Typed Languages", Proc. 21st. ACM Symposium on Principles of Programming Languages, Portland, Oregon, Jan. 1994, pp. 409--420.


Representing Type Information in Dynamically Typed Languages - Gudeman (1993)   (19 citations)  Self-citation (Gudeman)   (Correct)

....to addresses as well. For example, a tagged sequence type that is represented by a contiguous array on the heap can be manipulated by getting a pointer to the array on the heap and using that directly [9] There is an optimization or rather a class of optimizations called call forwarding [2] that skips unnecessary instructions at the beginning of a call, including conditional branches (and it can be generalized to skip instructions at other points as well) This optimization is particularly effective at skipping type checks in a program that uses types in a consistent manner. Also, ....

Koen De Bosschere, Saumya Debray, David Gudeman, and Sampath Kannan. "Call forwarding: A simple interprocedural optimization technique for dynamically typed languages". In Proc. 21st ACM Sym. on Principles of Programming Languages, Portland, OR, January 1994 (to appear).


Partial Translation: Towards a Portable and Efficient.. - Tarau, De Bosschere.. (1996)   Self-citation (De bosschere)   (Correct)

....sometimes causes inefficiencies. Indeed, early attempts [9, 17] showed that a straightforward translation into (standard) C is not particularly efficient (long code and slow execution) with one important exception: the implementation of committed choices languages such as KL1 [5] and Janus [7, 11, 15]. The major reason (besides the use of clever optimizations like call forwarding [7] is that the semantic gap between committed choice logic programming languages and an imperative language such as C is relatively small. 1 When looking at the basic cause of inefficiency, it turns out that it is ....

.... translation into (standard) C is not particularly efficient (long code and slow execution) with one important exception: the implementation of committed choices languages such as KL1 [5] and Janus [7, 11, 15] The major reason (besides the use of clever optimizations like call forwarding [7]) is that the semantic gap between committed choice logic programming languages and an imperative language such as C is relatively small. 1 When looking at the basic cause of inefficiency, it turns out that it is mostly due to a limited number of inefficiencies in the generated C code such as ....

[Article contains additional citation context not shown here]

K. De Bosschere, S. Debray, D. Gudeman, and S. Kannan. Call Forwarding: A Simple Interprocedural Optimization Technique for Dynamically Typed Languages. In Proceedings of the 21st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL), pages 409--420, Portland /USA, Jan. 1994. ACM.


On Delphi Lemmas And Other Memoing Techniques For.. - Tarau, De Bosschere.. (1997)   (3 citations)  Self-citation (De bosschere)   (Correct)

.... 2 one execution) The effect of memoing abstract answers instead of standard answers can be seen nicely from a benchmark which executes many times nrev 2 with lists of the same length, but with random values in the list: a Prolog system that memoes standard answers, will memo e.g. nrev([12,13,1,5,9], 9,5,1,13,12] and will not be able to use this lemma for a later call like nrev( 1,2,3,4,5] X) On the other hand, memoing the abstract answer nrev( A,B,C,D,E] E,D,C,B,A] allows to reuse the lemma many times. 2.6. Indexing Asserting abstract answers is the easiest way to use abstract answers ....

.... The effect of memoing abstract answers instead of standard answers can be seen nicely from a benchmark which executes many times nrev 2 with lists of the same length, but with random values in the list: a Prolog system that memoes standard answers, will memo e.g. nrev( 12,13,1,5,9] [9,5,1,13,12]) and will not be able to use this lemma for a later call like nrev( 1,2,3,4,5] X) On the other hand, memoing the abstract answer nrev( A,B,C,D,E] E,D,C,B,A] allows to reuse the lemma many times. 2.6. Indexing Asserting abstract answers is the easiest way to use abstract answers as lemmas. ....

[Article contains additional citation context not shown here]

K. De Bosschere, S. Debray, D. Gudeman, and S. Kannan. Call Forwarding: A Simple Interprocedural Optimization Technique for Dynamically Typed Languages. In Proceedings of the 21st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL), pages 409--420, Portland/USA, Jan. 1994. ACM.

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