| Xavier Leroy. The ZINC experiment: an economical implementation of the ML language. Technical Report 117, INRIA, 1990. |
....f pointer to code for x:2 5.2 Benchmarks To measure the performance improvements due to our optimizations, we performed benchmarks of standard programs on the stack machine and on a heap based architecture with as similar of an instruction set as possible. The benchmarks are taken from [8] where they have been used to benchmark the ZINC Abstract Machine (ZAM) of CAML light. Here are three of them: rec fib = lambda n. if (iszero n) 1 if (iszero (n 1) 1 fib(x 1) fib(x 2) 26 22 ( rec tak = lambda x. lambda y. lambda z. if x y tak (tak (x 1) y z) tak (y 1) z x) tak ....
Xavier Leroy. The ZINC experiment: An economical implementation of the ML language. Rapports Techniques 117, INRIA, February 1990.
....Hill, New Jersey, USA. Moscow ML owes much to The Caml Light implementation by Xavier Leroy and Damien Doligez (INRIA, Rocquencourt, France) It was instrumental in creating Moscow ML, which uses its runtime system, essentially the same bytecode generator, and many other aspects of its design [4, 5]. The Definition of Standard ML, unbeatably precise and concise. The ML Kit by Lars Birkedal, Martin Elsman, Niels Hallenberg, Nick Rothwell, Mads Tofte and David Turner (University of Copenhagen, Denmark, and University of Edinburgh, Scotland) which helped solving problems of parsing, infix ....
X. Leroy. The Zinc experiment: An economical implementation of the ML language. Rapport Technique 117, INRIA Rocquencourt, France, 1990. Available as ftp://ftp.inria.fr/INRIA/Projects/cristal/Xavier.Leroy/economical-ML-implementation.ps.gz.
....is always available before every applying operation; the existence of arguments should be examined in runtime. A function will be returned if no argument is available as in the case that the function is obtained from the evaluation of an argument expression. The ZINC machine (OCaml compiler [6]) and the STG machine (Glasgow Haskell compiler [8] are compilation methods based on the push enter model [4] In general, each model has advantages over the other [4, 6, 8] The eval apply model arranges argument passing statically in that it needs no dynamic examination of the existence of ....
....as in the case that the function is obtained from the evaluation of an argument expression. The ZINC machine (OCaml compiler [6] and the STG machine (Glasgow Haskell compiler [8] are compilation methods based on the push enter model [4] In general, each model has advantages over the other [4, 6, 8]. The eval apply model arranges argument passing statically in that it needs no dynamic examination of the existence of arguments in runtime. This model, however, returns a function whenever the function is obtained from an evaluation, so it must build a closure as a representation of the function ....
[Article contains additional citation context not shown here]
Xavier Leroy. The ZINC Experiment: An Economical Implementation of the ML Language. Technical Report 117, INRIA, Rennes, France, 1988.
....of aligning all store nodes to double words. More by luck than by design, the most frequent of the nodes identified by primary tags fit into multiples of two words. A port to 64 bit architectures is still outstanding. Revised Design. Seam aims for a reusable store. Its uniform nodes a la ZINC [8] are generic, thus easy to use: Each node is either tagged as an integer or as a heap block. The header word present in all heap blocks specifies size and a second level tag, and all component words are tagged. Thus, heap blocks are self describing and can be treated uniformly, allowing for a ....
X. Leroy. The ZINC experiment: An economical implementation of the ML language. Technical Report RT-0117, INRIA, Feb. 1990.
....implementation of a Java Virtual Machine is presented in Section 7.3. We conclude with a performance evaluation in Section 7.4. 7.1 Generic Services Store. The store implements the data graph described in Section 2.1. Our tagging scheme and heap layout are inspired by that described by Leroy [14]. We use tagged pointers as the type of store nodes, with one tag bit serving to distinguish between 31 bit integers and pointers to heapallocated data structures. Pointers have an additional tag bit, so we can distinguish pointers to transients from pointers to blocks or chunks without requiring ....
X. Leroy. The ZINC experiment: An economical implementation of the ML language. Technical Report RT-0117, INRIA, Feb. 1990.
....branch (the direct threaded version would not compile for Simplescalar) The workloads we use are prim 2x, a compiler for a little language, and bench gc, a conservative garbage collector. Ocaml 2. 04, the Objective CAML bytecode interpreter, which also imple ments a virtual stack machine [7]; the VM works on tagged data (with some associated overhead) but does not do run time type checking (the tags are probably for the garbage collector) We ran both, a version using direct threaded code, and a switch based version. The workloads we use are ocamIlex, a scanner generator, and ....
Xavier Leroy. The ZINC experiment: an economical implementation of the ML language. Technical report 117, INRIA, 1990. 405
....and informal nature of most compilers; it is certainly not due to a lack of interest in the subject. Indeed many state of the art compilers for applicative higher order programming languages (Scheme, ML, Lisp, etc) use a CPS intermediate representation [3, 56, 82] and many others do not [7, 9, 12, 50, 59]. Informal or incomplete arguments regarding the relative advantages and disadvantages of the CPS intermediate representation with respect to other intermediate representations are also common: ffl The CPS transformation translates complicated control facilities in the source language, e.g. ....
....V i . The object hcl x 1 : x n ; M;Ei is a closure, a record that contains the code for M and values for the free variables of (x 1 : x n :M ) The partial function ffi abstracts the semantics of the primitive operations. The CEK machine provides a model for designing direct compilers [11, 31, 59]. A compiler based on the CEK machine implements an efficient representation for environments, e.g. displays, and for continuations, e.g. a stack. The machine code produced by such a compiler realizes the abstract operations specified by the CEK machine by manipulating these concrete ....
[Article contains additional citation context not shown here]
Leroy, X. The Zinc Experiment: An Economical Implementation of the ML Language. Technical Report 117, INRIA (1990).
....a technique that by use of type information in an intermediate lambda language infers when memory can be allocated and deallocated. Experiments show that memory usage in such implementations are modest. Different techniques have been used for implementing backends for ML like languages. Caml Light [Ler90] generates highly compact portable byte code from an untyped extended lambda language whereas Standard ML of New Jersey uses continuation passing style to generate efficient native code for a number of architectures [AM91,App92,SA94] The semantics of Standard ML is described formally in The ....
Xavier Leroy. The ZINC experiment: An economical implementation of the ML language. Technical report, INRIA, February 1990.
....ML for example, is fairly similar to the implementation of an object calculus. Methods and functions are implemented similarly. Objects are like ML records, except that runtime resolution of component offsets is required. The compilation of ML is covered thoroughly by Cardelli [6] and by Leroy [4]. Part II Project 1996 6 Fiona Morgan Implementing an Imperative Object Calculus Preparation Syntax The first task when preparing to embark on my project, was to set out the syntax for the calculus I was going to implement. It is based on Abadi and Cardelli s Imperative Object Calculus, with ....
X Leroy, The Zinc Experiment: An Economical Implementation of the ML Language, Rapports Techniques No 117, INRIA, France, February 1990.
....for a portable version of a subset of Standard ML, namely MiniMl 1 , can be developed. The idea is to translate phrases of this subset of Standard ML into binary code that can be evaluated on an abstract machine. The abstract machine is part of the Caml Light system developed at INRIA [Ler93, Ler90b] The construction of the compiler builds on the bootstrapping capability of the Caml Light system. We change the front end of the compiler, so that a subset of phrases of Standard ML can be parsed, elaborated and compiled to run on the existing abstract machine of the Caml Light system. The ....
....a matter of scope and hence a compile time problem 2 . There are however, some runtime problems. Caml Light evaluates expressions right to left 3 2 Note that exceptions in Caml Light are not generative as in Standard ML. 3 In this way curried functions can be implemented very efficiently [Ler90b, page 14] 2.1. OVERVIEW OF THE COMPILER FOR MINIML 7 in contrast to Standard ML, in which expressions are evaluated left to right. This problem can only be solved efficiently by changing the abstract machine. Also, the semantics of equality differs between the Caml Light system and Standard ML ....
[Article contains additional citation context not shown here]
Xavier Leroy. The zinc experiment: An economical implementation of the ml language. Technical report, INRIA, February 1990.
....developed by Cousineau et al. 34] Its instructions correspond to the constructions of a Cartesian closed category: identity, composition, abstraction, application, pairing, and selection. It was the base for the CAML implementation of ML. The Zinc Abstract Machine (1990) developed by Leroy [82] permits more efficient execution. It is an optimized, strict version of the Krivine machine (see Section 6.2 below) This machine is the basis of the bytecode versions of Leroy s Caml Light [35,135] and Objective Caml implementations, and is used also in Moscow ML [117] 6.2. Lazy functional ....
X. Leroy, The Zinc experiment: An economical implementation of the ML language, Rapport Technique 117, INRIA Rocquencourt, France 1990.
....step produces object code ready for linking and subsequent execution by the Caml Light runtime interpreter. Of the four steps contained in the diagram of 5.1, only the typing step of oasisc differs significantly from the corresponding part of camlc. Xavier Leroy s technical report on Zinc[17] 1 presents the design of camlc, and so it also describes all but the typing step of oasisc. The remainder of this chapter then, is concerned with providing detailed descriptions of the data structures and algorithms which form the typing step of oasisc. 5.1 Data Structure Definitions 5.2 ML ....
Xavier Leroy. The ZINC experiment: an economical implementation of the ML language. Technical Report 117, INRIA, 1990. Available by anonymous FTP on ftp.inria.fr. BIBLIOGRAPHY 96
....branch (the direct threaded version would not compile for Simplescalar) The workloads we use are prims2x, a compiler for a little language, and bench gc, a conservative garbage collector. Ocaml 2. 04, the Objective CAML bytecode interpreter, which also implements a virtual stack machine [7]; the VM works on tagged data (with some associated overhead) but does not do run time type checking (the tags are probably for the garbage collector) We ran both, a version using directthreaded code, and a switch based version. The workloads we use are ocamllex, a scanner generator, and ocamlc, ....
Xavier Leroy. The ZINC experiment: an economical implementation of the ML language. Technical report 117, INRIA, 1990.
....is an object oriented language influenced by C but which greately improves on the type system of the latter. On the other hand, languages which have formally specified semantics and which do have good type systems are having object oriented features added to them. For example Objective CAML [Leroy 97] is an object oriented version of ML. The remainder of the Introduction concentrates on objects, type systems and formal methods. In section 1.2 the benefits of object oriented programming are described in more detail. In section 1.3 the advantages and disadvantages of type systems are ....
Xavier Leroy. "The ZINC experiment: an economical implementation of the ML language". Technical Report 117. Institut National de Recherche en Informatique et Automatique, 1990
....powerful, and were not always provided as primitive constructs in untyped languages. In comparison to the numerous results on the type theory of records, there has been less interest in their compilation. Many languages still have monomorphic operations on records, e.g. most implementations of ML [HMT90, Wei89, Ler90]. Others, that have more powerful records, use association list techniques, eventually improved by caching. Safe untyped languages require that the presence of elds is checked before access. The use of association lists interleaves dynamic checking with access to elds. In strongly typed ....
....record with defaults can be used to implement safe access in an untyped language. An orthogonal application could be the representation of feature terms that are very related to records. Thanks These ideas originate in discussions with Xavier Leroy. They have been mentioned for the rst time in [Ler90] and tested in the untyped version of Zinc, the ancestor of Caml Light. ....
Xavier Leroy. The ZINC experiment: an economical implementation of the ML language. Technical Report 117, INRIA-Rocquencourt, BP 105, F-78 153 Le Chesnay Cedex, 1990.
....polymorphism is based on implicit typing. The programmer writes a program without type speci cation, and the type system automatically infers its most general polymorphic type that represents the generic behavior of the program. In conventional implementations of an ML style language such as [2, 21], type inference is done only for static check of type consistency; after type checking is done, the type information is thrown away and compilation is done based on the syntactic structure of raw terms. However, the approach of type directed specialization we are advocating makes crucial use of ....
X. Leroy. The ZINC experiment: an economical implementation of the ML language. Technical Report 117, INRIA, 1992.
....proceeds by making branches of di erent constructors and ascribing the list of patterns to those branches. This approach has the disadvantage of space explosion. The combination of tree automata with failures is the basis for the current implementations of most common functional languages [Mar94, Ler90] The pattern matching of the SL system follows this approach, but the support of semantic notions and the non determinism of rewriting require extensions to the existing algorithms. 1. SL Patterns The SL patterns include common patterns such as wildcard patterns, variable patterns, alternative ....
Xavier Leroy. The ZINC experiment: an economical implementation of the ML language. Technical report 117, INRIA, 1990.
....develop such a compilation method, we must rst develop an operational semantics for a higher order polymorphic functional language that accounts for direct manipulation of run time objects of various sizes. Existing formalisms such as natural semantics [12] and various abstract machines including [2, 15] are all based on a boxed semantics mentioned above. To our knowledge, there is no formalism that allows polymorphic functions to manipulate a run time environment consisting of unboxed values. The goal of this paper is to develop one such formalism of an unboxed operational semantics. Just as ....
X. Leroy. The ZINC experiment: an economical implementation of the ML language. Technical Report 117, INRIA, 1992.
....de la CAM : la DPCAM. La CAM est une machine a pile, la DPCAM est un r eseau statique de machines a pile. Nous nous limitons dans ce qui suit a enoncer les propri et es formelles de la s emantique qui sont pr esentement exploit ees par un simulateur tournant sur Suns ecrit en Caml Light [20, 21], ce dernier etant pr esentement en cours de modification pour obtenir la DPZAM. 15 On trouve une description compl ete de la s emantique de DPML et une d erivation syst ematique de son implantation dans la th ese de Christian Foisy [10] 3.1 Implantation La DPCAM est implant ee par un ....
X. Leroy, The ZINC experiment: An economical implementation of the ML language, Rapport Technique 117, INRIA, Institut National de Recherche en Informatique et Automatique, 1991.
....because it requires us to identify precisely all roots that can point to allocated data. Consequently we shall use a more complicated conservative garbage collector with ambiguous roots. 3 Implementation 3. 1 The front end Our front end is much the same as ZINC s one, written by Xavier Leroy [Ler90]. It first parses the Caml Light grammar and then infers the types of the expressions using a variant of Milner s algorithm [Mil78] The typechecker stores type information about each symbol in the global environment, which enables us to use the type of global functions during the code generation ....
X. Leroy. The ZINC experiment: an economical implementation of the ML language. Technical Report 117, INRIA, 1990. 8
....of the queues are chosen as communication partners. The channel class contains methods which perform synchronisation and value transfer between communicating processes. The expressions of the data sublanguage are evaluated by an abstract machine PVM which is similar to the machine presented in [Ler90] The machine consists of two stacks and four registers. The first stack is used for reduction of operators and function application, the second for the management of variables. The content of the registers determine the states of the stacks. Instead of interpreting byte code, the statements of ....
Xavier Leroy. The ZINC Experiment: An economical implementation of the ML language. Technical Report 117, Institut National de Recherche en Informatique et Automatique (INRIA), 1990.
....the channel that is stored in the corresponding queue. If both queues contain at least one request, the first processes of the queues are chosen as communication partners. The expressions of the data sublanguage are evaluated by an abstract machine PVM which is similar to the machine presented in [Ler90]. The machine consists of two stacks and four registers. The first stack is used for reduction of operators and function application, the second for the management of variables. The content of the registers determine the states of the stacks. Instead of interpreting byte code, the statements of ....
Xavier Leroy. The ZINC Experiment: An economical implementation of the ML language. Technical Report 117, Institut National de Recherche en Informatique et Automatique (INRIA), 1990.
....The Caml Light system was instrumental in creating Moscow ML, which uses the Caml Light runtime system and essentially the same bytecode generator. Many other aspects of the design were also derived from Caml Light, developed by Xavier Leroy and Damien Doligez at INRIA Rocquencourt, France [3, 4]. The ML Kit helped solving problems of parsing, infix resolution, and type inference [2] The Moscow ML home page is at http: www.dina.kvl.dk sestoft mosml.html. 1 Contents 1 Getting started 4 1.1 Installation 4 1.2 The interactive system 4 1.3 New SML Standard Library 4 1.4 The batch ....
X. Leroy. The Zinc experiment: An economical implementation of the ML language. Rapport Technique 117, INRIA Rocquencourt, France, 1990. Available as ftp.inria.fr:/INRIA/Projects/cristal/Xavier.Leroy/economical-ML-implementation.ps.gz.
....a basis for a practical programming language. Firstly, the operand stack interpretation of and application illustrated in Sect. 2.3 seems fairly intuitive. Secondly, the separation of the two parts of CBV abstraction (viz. thunk and ) makes currying of functions problematic in CBV (cf. [16]) as easy as in CBN, because of the isomorphism (A Theta A 0 ) B = A (A 0 B) Furthermore, CBPV gives rise to more equivalences than either CBN or CBV, which could benefit implementers. Specifically, the comparatively simple continuation semantics of Sect. 6 might allow efficient ....
X. Leroy. The ZINC experiment: an economical implementation of the ML language. Technical Report 117, INRIA, 1991.
....object oriented languages. This paper develops formal foundations and verification methods to document and better understand various aspects of our implementation. 2 Our system compiles the imperative object calculus to bytecodes for an abstract machine, implemented in C, based on the ZAM of Leroy (1990). We also implemented a closure based interpreter for the calculus. A typechecker enforces the system of primitive self types of Abadi and Cardelli, but for the sake of brevity we will not discuss this type system further in this paper. Many of our semantic techniques originate in earlier studies ....
.... calculus, the imp calculus, this encoding does not permit assignments to bound variables. In order to avoid the overhead of encoding, our implementation treats functions and function application as language primitives and compiles them to dedicated abstract machine codes based on the ZAM of Leroy (1990). In this implementation, a function application b(a) is evaluated right to left on grounds of efficiency. Although functions are derivable, for the purpose of the operational semantics of this section and the abstract machine and compiler in the next, Section 3, we consider an extended calculus ....
[Article contains additional citation context not shown here]
Leroy, X. (1990). The ZINC experiment: an economical implementation of the ML language. Technical Report 117, INRIA.
....runs, FX 32 re optimizes the application. Currently, much virtual machine development is motivated by the desire for platform independence. A number of recent virtual architectures besides Java attempt to satisfy the desire. Oberon [10] Inferno [11] Python [12] ANDF [13, 14] Objective Caml [15, 16] and Oblique [17] are such virtual architectures. Other languages take advantage of these machine independent platforms by compiling to a virtual architecture. Scheme, in the form of Kawa [18] and IBM REXX, in the from of NetRexx [19] obtained machine independence by compiling into Java ....
Xavier Leroy, "The ZINC experiment, an economical implementation of the ML language," INRIA Technical Report 117, 1990.
....bindings. 6.2 Theorem [Soundness of Optimization] If A . D ) E and t 2 A, then 1. t 2 D i t 2 E; and 2. for all x, we have t 2 D ) x; u) i t 2 E ) x; u) 13 7 Related Work The pattern match compilation techniques used in functional language compilers [BM85, PS90, Aug85, Wad87, Ler91, Mar94] are complementary to our pattern optimization technique. The goal of pattern match compilers is to generate lower level code for a good order of traversal in the input tree, requires few run time checks, whereas our technique performs a higher level optimization on patterns that should ....
....match compilation would simply loop. Another issue is how our type inference or optimization may assist standard optimizations, or vice versa. There are two conventional approaches to pattern match compilation: simple decision trees [BM85, PS90] and decision trees with back tracking [Aug85, Wad87, Ler91] It appears that the rst approach cannot make e ective use of our optimization, while the second may be able to. However, since the wild cards introduced by our optimization could interact with the heuristics used in pattern match compilation, it is hard to predict the exact e ect of this ....
Xavier Leroy. The ZINC experiment: an economical implementation of the ML language. Technical Report 117, INRIA, 1991.
....programs written in Moscow ML load fast and give good interactive response. There are two reasons for this: the runtime system is small, and the programs are precompiled to compact bytecode files. The size of the Moscow ML runtime system (which is closely based on the Caml Light runtime system [5]) is 75 KB, as compared to the Perl interpreter s 520 KB (for the Solaris 2 operating system) Moscow ML programs are compiled to compact bytecode files; the size of the bytecode file for the lambda reducer is 27 KB. A Perl script, on the other hand, is stored in source form and is parsed and ....
X. Leroy. The Zinc experiment: An economical implementation of the ML language. Rapport Technique 117, INRIA Rocquencourt, France, 1990.
....construct to the calculus that corresponds to the closed structure on a category. Hasegawa originally compared his first order function abstraction x:M to lambda in early Lisp (i.e. lacking first class functions) More recently, such a first order binder has been found useful in compiling [1, 5]; it was called s in [1] Roughly speaking the reason is that a curried function x 1 : xn:M would need to build n intermediate closures, an unnecessary expense if the function is immediately applied to n arguments. An uncurried n ary function would avoid building closures, but not ....
X. Leroy. The ZINC experiment : an economical implementation of the ML language. Technical Report RT-0117, INRIA, Institut National de Recherche en Informatique et en Automatique, 1990.
....correction et de permettre des comparaisons formelles en tudiant chaque transformation ou leur composition. Nous nous concentrons ici sur l appel par valeur et dcrivons trois implantations diffrentes: la Cam [7] Tabac un compilateur bas sur [13] et une version stricte de la machine de Krivine [19]. 1 Introduction Un des sujets les plus tudis concernant les langages fonctionnels est leur mise en oeuvre. Depuis le clbre article de P.J. Landin [18] il y a plus de trente ans, une plthore de nouvelles machines abstraites ou techniques de compilation a t propose. La liste des machines ....
....clbre article de P.J. Landin [18] il y a plus de trente ans, une plthore de nouvelles machines abstraites ou techniques de compilation a t propose. La liste des machines abstraites fonctionnelles comprend (entre autres) la SECD [18] la Fam [6] la Cam [7] la CMCM [20] la Tim [11] la Zam [19], la G machine [15] et la machine de Krivine [8] D autres implantations ne sont pas dcrites par une machine abstraite mais par des collections de transformations ou de techniques de compilation. Citons par exemple, les compilateurs bass sur la conversion CPS [1] 13] 17] De plus, de nombreux ....
[Article contains additional citation context not shown here]
X. Leroy. The Zinc experiment: an economical implementation of the ML language. INRIA Technical Report 117, 1990.
....functional languages is their implementation. Since Landin s seminal proposal, 30 years ago [31] a plethora of new abstract machines or compilation techniques have been proposed. The list of existing abstract machines includes the SECD [31] the Cam [10] the CMCM [36] the Tim [20] the Zam [32], the G machine [27] and the Krivine machine [11] Other implementations are not described via an abstract machine but as a collection of transformations or compilation techniques such as compilers based on continuation passing style (CPS) 2] 22] 30] 52] Furthermore, numerous papers present ....
....is evaluated, a test is performed: if there is a mark, the function is returned as a result (and a closure is built) otherwise the argument is present and the function is applied. This technique avoids building some closures but at the price of performing dynamic tests. It is implemented in Zinc [32]. The mark e is supposed to be a value that can be distinguished from others. Functions are transformed into grab s E which satisfies the reduction rules push s e o grab s E push s E that is, a mark is present and the function E is returned and push s V o grab s E push s V o E (V e) 12 ....
[Article contains additional citation context not shown here]
X. Leroy. The Zinc experiment: an economical implementation of the ML language. INRIA Technical Report 117, 1990.
....Since the seminal proposal of Landin, 30 years ago [19] a plethora of new abstract machines or compilation techniques have been proposed. The list of existing abstract machines includes (but is surely not limited to) the SECD [19] the FAM [6] the CAM [7] the CMCM [21] the TIM [11] the ZAM [20], the G machine [16] and the Krivine machine [8] Other implementations are not described via an abstract machine but as a collection of transformations or compilation techniques such as CPS based compilers [1] 13] 18] Furthermore, numerous papers present optimizations often adapted to a specific ....
....Control We do not consider left to right vs. right to left as a fundamental choice to implement callby value. A more radical dichotomy is explicit applies vs. marks. The first option is the standard technique (e.g. used in the SECD or CAM) while the second was hinted at in [11] and used in ZINC [20]. 3.1 Compilation of control using apply ( eval apply model ) In this scheme, applications E 1 E 2 are compiled by evaluating the argument E 2 , the function E 1 and finally applying the result of E 1 to the result of E 2 . 3.1.1 Standard transformations The compilation of right to left ....
[Article contains additional citation context not shown here]
X. Leroy. The Zinc experiment: an economical implementation of the ML language. INRIA Technical Report 117, 1990.
....global labels (which both ANSI C and Ada83 lack) We use local labels instead, merging mutually recursive functions into a single function with multiple entry points if necessary; see Section 11. The architecture of our translator resembles that of other recent transformation based FL compilers [1, 24, 32, 41]. The translator, which is itself written in Standard ML, is structured as a series of relatively simple transformations, each preserving semantics and types; see Section 5. It 2 uses a small set of intermediate languages, each of which is strongly typed and executable by an interpreter. There ....
X. Leroy. The ZINC experiment: an economical implementation of the ML language. Technical Report 117, INRIA, 1991.
....#which both ANSI C and Ada83 lack#. It uses local labels instead, merging mutually recursive functions into a single function with multiple entry points if necessary; see Section 11. The architecture of our translator resembles that of other recent transformationbased FL compilers #Appel, 1992; Leroy, 1991; Peyton Jones, 1996; Tarditi et al. 1996#. The translator, which is itself written in Standard ML, is structured as a 4 A. Tolmach and D. Oliva series of relatively simple transformations, each preserving semantics and types; see Section 5. It uses a small set of intermediate languages, each of ....
Leroy, X. #1991#. The ZINC experiment: an economical implementation of the ML language. Technical Report 117, INRIA.
No context found.
X. Leroy. The ZINC experiment: an economical implementation of the ML language. Technical report 117, INRIA, 1990.
No context found.
X. Leroy. The ZINC experiment: an economical implementation of the ML language. Technical report 117, INRIA, 1990.
....reduction that avoids explicit run time tests is this term symbolic or not . In section 4, we develop one such efficient implementation of weak symbolic reduction, as an abstract machine and its associated compilation scheme. The abstract machine is a minor extension of the ZAM abstract machine [16] that is at the heart of the Objective Caml bytecode interpreter [17] and reuses all the work that has been expended in making the latter efficient. Both the abstract machine and its compilation scheme have been proved correct with respect to the weak reduction semantics, and the proof was ....
....is itself in normal form. 4 An Abstract Machine for Weak Symbolic Reduction We now turn to implementing weak symbolic reduction by compilation to a suitable abstract machine. This abstract machine is a slight extension of the ZAM, which underlies the bytecode interpreter of Objective Caml [16, 17], In the terminology of [20] the ZAM is an environment and closure based abstract machine following the push enter model, and implementing a call by value evaluation strategy. The purpose of this section is to demonstrate that minor modifications of an existing abstract machine for weak ....
[Article contains additional citation context not shown here]
X. Leroy. The ZINC experiment: an economical implementation of the ML language. Technical report 117, INRIA, 1990.
No context found.
Xavier Leroy. The ZINC experiment: an economical implementation of the ML language. Technical Report 117, INRIA, 1990.
No context found.
Leroy, X. (1990). The ZINC experiment: an economical implementation of the ML language. Technical Report 117, INRIA.
No context found.
Xavier Leroy. The Zinc experiment: an economical implementation of the ML language. Rapport Technique 117, INRIA Rocquencourt, Le Chesnay, France, February 1990.
No context found.
Leroy, X. (1990). The ZINC Experiment: An Economical Implementation of the ML Language. Technical Report No. 117, INRIA.
No context found.
Leroy, X. (1990, Feburary). The ZINC Experiment: An Economical Implementation of the ML Language.
No context found.
X. Leroy. The ZINC experiment: an economical implementation of the ML language. Technical report 117, INRIA, 1990.
No context found.
X. Leroy, "The ZINC experiment: an economical implementation of the ML language," Technical report 117, INRIA, 1990.
No context found.
X. Leroy. The ZINC experiment: An economical implementation of the ML language. Rapport Technique 117, 1991.
No context found.
X. Leroy. The Zinc experiment: an economical implementation of the ML language. Tr 117, inria-rocquencourt, INRIA, Feb. 1990. 12
No context found.
X. Leroy. The ZINC experiment: An economical implementation of the ML language. Technical Report 117, 1991.
No context found.
X. Leroy. The ZINC experiment: An economical implementation of the ML language. Rapport Technique 117, 1991.
No context found.
Leroy, X. The ZINC experiment: an economical implementation of the ML language. Technical report 117, INRIA, 1990.
No context found.
X. Leroy. The ZINC experiment: an economical implementation of the ML language. Technical Report 117, INRIA, 1990.
First 50 documents Next 50
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