Results 11 - 20
of
20
Early Storage Reclamation in a Tracing Garbage Collector
, 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
, 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
, 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
, 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
, 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
, 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
- 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
- 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
"... 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 ∗
"... 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.

