• Documents
  • Authors
  • Tables
  • Other Seers ▼
    RefSeer AckSeer CollabSeer SeerSeer
  • Log in
  • Sign up
  • MetaCart

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations | Disambiguate

A theory of stack allocation in polymorphically typed languages (1993)

by M Tofte, J-P Talpin
Add To MetaCart

Tools

Sorted by:
Results 11 - 20 of 20

Early Storage Reclamation in a Tracing Garbage Collector

by Timothy Harris , 1999
"... This article presents a novel technique for allowing the early recovery of storage space occupied by garbage data. The idea is similar to that of generational garbage collection, except that heap is partitioned based on a static analysis of data type definitions rather than on the approximate age of ..."
Abstract - Cited by 7 (1 self) - Add to MetaCart
This article presents a novel technique for allowing the early recovery of storage space occupied by garbage data. The idea is similar to that of generational garbage collection, except that heap is partitioned based on a static analysis of data type definitions rather than on the approximate age of allocated objects. A prototype implementation is presented, along with initial results and ideas for future work. 1 Introduction It has been widely acknowledged that the type information present in a program written in a high level language can provide valuable opportunities for improving run-time performance. Examples of this are pervasive. For instance, information gleaned from type analysis allows natural unboxed representations of primitive quantities like integers, even in the presence of polymorphism [Mor95, HU95]. The precision of pointer-aliasing analysis in an imperative language can be improved by considering the types of the pointers involved [App98]. Run-time feedback can help...

A Region Profiler for a Standard ML compiler based on Region Inference

by Niels Hallenberg, Supervisor Mads Tofte , 1996
"... In this report we present the region profiler used in the ML Kit (a Standard ML compiler that uses region inference, [7]). The profiler is based on work done by Colin Runciman and David Wakeling ([17]) on a heap profiler for lazy functional programs. The profiler can be used to reduce memory usage o ..."
Abstract - Cited by 4 (4 self) - Add to MetaCart
In this report we present the region profiler used in the ML Kit (a Standard ML compiler that uses region inference, [7]). The profiler is based on work done by Colin Runciman and David Wakeling ([17]) on a heap profiler for lazy functional programs. The profiler can be used to reduce memory usage of programs compiled with the ML Kit. Hints and examples on writing programs in a more region friendly way are given. Supervisor: Mads Tofte 1 June 14, 1996 2 Contents 1 Introduction 3 2 Profiling in the ML Kit 4 3 Region inference 5 3.1 Region annotated lambda program : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 5 3.2 Region annotated terms : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 6 3.3 Inference Rules : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 7 3.4 Multiplicity and physical size inference : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 12 3.5 Storage mode analysis : : : ...

Global Regions

by Holds Values Of, Mads Tofte, Lars Birkedal, Martin Elsman, Niels Hallenberg, Tommy Højfeld, Olesen Peter Sestoft , 2001
"... option, 178 stack band, 105 stack profile, 162, 178 standard argument register, 139, 140 standard closure register, 139, 140 Standard ML, 9 1997 revision, 47 Basis Library, 47 Modules, 35, 145 -stat option, 179 statistics after optimisation, StatObject, 213 storage mode, 98 str, 49 Stri ..."
Abstract - Cited by 1 (0 self) - Add to MetaCart
option, 178 stack band, 105 stack profile, 162, 178 standard argument register, 139, 140 standard closure register, 139, 140 Standard ML, 9 1997 revision, 47 Basis Library, 47 Modules, 35, 145 -stat option, 179 statistics after optimisation, StatObject, 213 storage mode, 98 str, 49 String.h, 188 strongly connected component, 171 structure declaration, 148 substitution, 127 substring, 49 Tagging.h, 188 tail recursion, 74 target program, 38 TextIO, 78 timer prof, 173 profile object, 161 region, 161 stack, 162 profile data file, 176 profile strategy compile-time, 169 options, 173 runtime, 172 profile tick, 173 -profiletime option, 173 Profiling sub-menu, 169 profiling time slot, 173 program point, 161 program transformation, 73 project, 145 project file, 145 comments in, 146 grammar, 145 projects, 146 compiling, 64 running, 64 put, 45, 62 put-e#ect escaping, 76 quit, 181 quitting from the Kit, 181 rDesc, see region descriptor real list,

A Calculus for Boxing Analysis of Polymorphically Typed Languages

by Jesper Jørgensen , 1996
"... An important decision when implementing languages with polymorphic types, such as Standard ML or Haskell, is whether to represent data in boxed or unboxed form and when to transform them from one representation to the other. Using a language with explicit representation types and boxing/unboxing ope ..."
Abstract - Add to MetaCart
An important decision when implementing languages with polymorphic types, such as Standard ML or Haskell, is whether to represent data in boxed or unboxed form and when to transform them from one representation to the other. Using a language with explicit representation types and boxing/unboxing operations we axiomatize equationally the set of all explicitly boxed versions, called completions , of a given source program. In a two-stage process we give some of the equations a rewriting interpretation that captures eliminating boxing/unboxing operations without relying on a specific implementation or even the semantics of the underlying language. The resulting reduction systems operate on equivalence classes of completions defined by the remaining equations E, which can be understood as moving boxing/unboxing operations along data flow paths in the source program. We call a completion e opt formally optimal if every other completion for the same program (and at the same representation ty...

Multiplicity Inference - Inferring sizes of regions

by Magnus Vejlstrup, Supervisor Mads Tofte , 1994
"... This report is about implementation of functional programming languages. In these languages the programmer does not need to worry about de-allocating data structures, when they go out of use. This is tranditionally done for him by the garbage collector of the run-time system. ..."
Abstract - Add to MetaCart
This report is about implementation of functional programming languages. In these languages the programmer does not need to worry about de-allocating data structures, when they go out of use. This is tranditionally done for him by the garbage collector of the run-time system.

Implementation techniques for a multi-service Java Virtual Machine

by Timothy L. Harris , 1999
"... This report describes the design and implementation work which has been undertaken using the Java Virtual Machine (JVM) over the Nemesis operating system. The aim is to provide a Java runtime system which is able to support a diverse mix of traditional and soft-real-time applications, just as the Ne ..."
Abstract - Add to MetaCart
This report describes the design and implementation work which has been undertaken using the Java Virtual Machine (JVM) over the Nemesis operating system. The aim is to provide a Java runtime system which is able to support a diverse mix of traditional and soft-real-time applications, just as the Nemesis operating system aims to provide this support to native applications. The report covers three aspects of this work: an interface between Java applications and native services, a run-time code generator that may operate safely under the control of the application and a garbage collector that enables the heap to be partitioned into separately-managed sections. It finally presents the design and prototype implementation of an eXtensible Virtual Machine (XVM) which provides fine-grained control of the primitive operations provided to the programmer.

Static Monotonicity Analysis for lambda-Definable Functions over Lattices

by Andrzej S. Murawski, Kwangkeun Yi - Verification, Model Checking, and Abstract Interpretation (VMCAI ’02), 3rd International Workshop , 2002
"... We employ static analysis to examine monotonicity of functions defined over lattices in a #-calculus augmented with constants, branching, meets, joins and recursive definitions. The need for such a verification procedure has recently arisen in our work on a static analyzer generator called Zoo, ..."
Abstract - Add to MetaCart
We employ static analysis to examine monotonicity of functions defined over lattices in a #-calculus augmented with constants, branching, meets, joins and recursive definitions. The need for such a verification procedure has recently arisen in our work on a static analyzer generator called Zoo, in which the specification of static analysis (input to Zoo) consists of finite-height lattice definitions and function definitions over the lattices. Once monotonicity of the functions is ascertained, the generated analyzer is guaranteed to terminate.

Better Static Memory Management: Improving Region-Based Analysis

by Of Higher-Order Languages, Alexander Aiken, Manuel Fähndrich, Raph Levieny - In ACM Conference on Programming Language Design and Implementation , 1995
"... Static memory management replaces runtime garbage collection with compile-time annotations that make all memory allocation and deallocation explicit in a program. We improve upon the Tofte/Talpin region-based scheme for compile-time memory management [TT94]. In the Tofte/Talpin approach, all value ..."
Abstract - Add to MetaCart
Static memory management replaces runtime garbage collection with compile-time annotations that make all memory allocation and deallocation explicit in a program. We improve upon the Tofte/Talpin region-based scheme for compile-time memory management [TT94]. In the Tofte/Talpin approach, all values, including closures, are stored in regions. Region lifetimes coincide with lexical scope, thus forming a runtime stack of regions and eliminating the need for garbage collection. We relax the requirement that region lifetimes be lexical. Rather, regions are allocated late and deallocated as early as possible by explicit memory operations. The placement of allocation and deallocation annotations is determined by solving a system of constraints that expresses all possible annotations. Experiments show that our approach reduces memory requirements significantly, in some cases asymptotically.

Signature: A Type-Passing Implementation of Value Types and Genericity

by Tim Owen, Tim Owen
"... I hereby declare that this thesis has not been submitted, either in the same or different form, to this or any other university for a degree. ..."
Abstract - Add to MetaCart
I hereby declare that this thesis has not been submitted, either in the same or different form, to this or any other university for a degree.

Deterministic Parallelism via Liquid Effects ∗

by Ming Kawaguchi, Patrick Rondon, Alexander Bakst, Ranjit Jhala
"... Shared memory multithreading is a popular approach to parallel programming, but also fiendishly hard to get right. We present Liquid Effects, a type-and-effect system based on refinement types which allows for fine-grained, low-level, shared memory multithreading while statically guaranteeing that a ..."
Abstract - Add to MetaCart
Shared memory multithreading is a popular approach to parallel programming, but also fiendishly hard to get right. We present Liquid Effects, a type-and-effect system based on refinement types which allows for fine-grained, low-level, shared memory multithreading while statically guaranteeing that a program is deterministic. Liquid Effects records the effect of an expression as a formula in first-order logic, making our type-and-effect system highly expressive. Further, effects like Read and Write are recorded in Liquid Effects as ordinary uninterpreted predicates, leaving the effect system open to extension by the user. By building our system as an extension to an existing dependent refinement type system, our system gains precise value- and branch-sensitive reasoning about effects. Finally, our system exploits the Liquid Types refinement type inference technique to automatically infer refinement types and effects. We have implemented our type-and-effect checking techniques in CSOLVE, a refinement type inference system for C programs. We demonstrate how CSOLVE uses Liquid Effects to prove the determinism of a variety of benchmarks.
The National Science Foundation
  • About CiteSeerX
  • Submit Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2010 The Pennsylvania State University