Results 21  30
of
94
Callbyneed and Continuationpassing Style
 Lisp and Symbolic Computation
, 1993
"... . This paper examines the transformation of callbyneed terms into continuation passing style (CPS). It begins by presenting a simple transformation of callbyneed terms into program graphs and a reducer for such graphs. From this, an informal derivation is carried out, resulting in a translat ..."
Abstract

Cited by 18 (0 self)
 Add to MetaCart
(Show Context)
. This paper examines the transformation of callbyneed terms into continuation passing style (CPS). It begins by presenting a simple transformation of callbyneed terms into program graphs and a reducer for such graphs. From this, an informal derivation is carried out, resulting in a translation from terms into selfreducing program graphs, where the graphs are represented as CPS terms involving storage operations. Though informal, the derivation proceeds in simple steps, and the resulting translation is taken to be our canonical CPS transformation for callbyneed terms. In order to define the CPS transformation more formally, two alternative presentations are given. The first takes the form of a continuation semantics for the callbyneed language. The second presentation follows Danvy and Hatcliff 's twostage decomposition of the callbyname CPS transformation, resulting in a similar twostage CPS transformation for callbyneed. Finally, a number of practical matters are...
RML  A New Language and Implementation for Natural Semantics
 PROCEEDINGS OF THE 6TH INTERNATIONAL SYMPOSIUM ON PROGRAMMING LANGUAGE IMPLEMENTATION AND LOGIC PROGRAMMING, PLILP, VOLUME 884 OF LNCS
, 1994
"... RML is a programming language intended for the implementation of Natural Semantics specifications. The basic procedural elements are relations: manytomany mappings defined by a number of axioms or inference rules. It has control flow, logical variables and (explicit) unification as in Prolog; from ..."
Abstract

Cited by 17 (2 self)
 Add to MetaCart
RML is a programming language intended for the implementation of Natural Semantics specifications. The basic procedural elements are relations: manytomany mappings defined by a number of axioms or inference rules. It has control flow, logical variables and (explicit) unification as in Prolog; from ML it borrows a polymorphic type system, data structures, and pattern matching; a facility for separatelycompilable modules also exists. A simple prototype compiler, based on translating RML to ContinuationPassing Style and then to C, has been implemented. Benchmarks indicate that this compiler generates code that is several orders of magnitude faster than Typol, and two times faster than standard Prolog compilers.
Garbage Collection and Other Optimizations
, 1987
"... Existing techniques for garbage collection and machine code optimizations can interfere with each other. The inability to fully optimize code in a garbagecollected system is a hidden cost of garbage collection. One solution to this problem is proposed; an inexpensive protocol that permits most opti ..."
Abstract

Cited by 14 (0 self)
 Add to MetaCart
(Show Context)
Existing techniques for garbage collection and machine code optimizations can interfere with each other. The inability to fully optimize code in a garbagecollected system is a hidden cost of garbage collection. One solution to this problem is proposed; an inexpensive protocol that permits most optimizations and garbage collection to coexist. A second approach to this problem and a separate problem in its own right is to reduce the need for garbage collection. This requires analysis of storage lifetime. Inferring storage lifetime is di#cult in a language with nested and recursive data structures, but it is precisely these languages in which garbage collection is most useful. An improved analysis for "storage containment" is described. Containment information can be represented in a directed graph. The derivation of this graph falls into a monotone dataflow analysis framework; in addition, the derivation has the ChurchRosser property. The graphs produced in the analysis of a valuea...
Object Closure Conversion
 In Electronic Notes in Theoretical Computer Science
, 1999
"... An integral part of implementing functional languages is closure conversionthe process of converting code with free variables into closed code and auxiliary data structures. Closure conversion has been extensively studied in this context, but also arises in languages with firstclass objects. In ..."
Abstract

Cited by 13 (0 self)
 Add to MetaCart
An integral part of implementing functional languages is closure conversionthe process of converting code with free variables into closed code and auxiliary data structures. Closure conversion has been extensively studied in this context, but also arises in languages with firstclass objects. In fact, one variant of Java's inner classes are an example of objects that need to be closure converted, and the transformation for converting these inner classes into Java Virtual Machine classes is an example of closure conversion. This paper argues that a direct formulation of object closure conversion is interesting and gives further insight into general closure conversion. It presents a formal closureconversion translation for a secondorder object language and proves it correct. The translation and proof generalise to other objectoriented languages, and the paper gives some examples to support this statement. Finally, the paper discusses the well known connection between function closu...
On Static and Dynamic ControlFlow Information in Program Analysis and Transformation
, 2001
"... interpretation and fixedpoint computation . . . 71 5.1.2 The timestamping technique . . . . . . . . . . . . . . . . 72 5.2 The timestampsbased approximation algorithm . . . . . . . . . 73 5.2.1 A class of recursive equations . . . . . . . . . . . . . . . . 73 5.2.2 The intuition behind time stam ..."
Abstract

Cited by 13 (6 self)
 Add to MetaCart
(Show Context)
interpretation and fixedpoint computation . . . 71 5.1.2 The timestamping technique . . . . . . . . . . . . . . . . 72 5.2 The timestampsbased approximation algorithm . . . . . . . . . 73 5.2.1 A class of recursive equations . . . . . . . . . . . . . . . . 73 5.2.2 The intuition behind time stamps . . . . . . . . . . . . . 74 5.3 A formalization of the timestampsbased algorithm . . . . . . . 75 5.3.1 Statepassing recursive equations . . . . . . . . . . . . . . 75 5.3.2 Correctness . . . . . . . . . . . . . . . . . . . . . . . . . . 77 5.3.3 Complexity estimates . . . . . . . . . . . . . . . . . . . . 78 5.4 An extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 5.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Appendix 5.A Operational specification . . . . . . . . . . . . . . . . . 81 6 Static Transition Compression 85 6.2 Source and target languages . . . . . . . . . . . . . . . . . . . . . 86 6.2.1 An unstructured target language . . . . . . . . . . . . . . 86 6.2.2 A structured source language . . . . . . . . . . . . . . . . 86 6.3 A contextinsensitive translation . . . . . . . . . . . . . . . . . . 87 6.3.4 Chains of jumps . . . . . . . . . . . . . . . . . . . . . . . 91 6.4 Context awareness . . . . . . . . . . . . . . . . . . . . . . . . . . 92 6.4.1 Continuations and duplication . . . . . . . . . . . . . . . 92 6.4.2 Towards the right thing . . . . . . . . . . . . . . . . . . . 92 6.5 A contextsensitive translation . . . . . . . . . . . . . . . . . . . 93 6.6 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Environment Analysis via ∆CFA
, 2006
"... We describe a new programanalysis framework, based on CPS and procedurestring abstractions, that can handle critical analyses which the kCFA framework cannot. We present the main theorems concerning correctness, show an application analysis, and describe a running implementation. ..."
Abstract

Cited by 12 (8 self)
 Add to MetaCart
We describe a new programanalysis framework, based on CPS and procedurestring abstractions, that can handle critical analyses which the kCFA framework cannot. We present the main theorems concerning correctness, show an application analysis, and describe a running implementation.