Results 1 -
8 of
8
Adoption and Focus: Practical Linear Types for Imperative Programming
- PLDI'02
, 2002
"... A type system withlin earity is useful for checking software protocols and resource man agemen t at compile time. Lin#"$"M y provides powerfulreason#)M about state chan ges, but at the price of restriction son aliasin g. The hard division between lin ear an dn on lin ear types forces the programmer ..."
Abstract
-
Cited by 139 (4 self)
- Add to MetaCart
A type system withlin earity is useful for checking software protocols and resource man agemen t at compile time. Lin#"$"M y provides powerfulreason#)M about state chan ges, but at the price of restriction son aliasin g. The hard division between lin ear an dn on lin ear types forces the programmer to make a trade-off between checkin g a protocol on an object an# aliasin# the object. ost on erous is the restriction that an y type with alin ear component must itself be linear. Because of this, checking a protocolon an object imposes aliasin g restriction s on an y data structure that directly orin directly points to the object. We propose an#$ type system that reduces these restrictions with the adoption and focus constructs. Adoption safely allows a programmer to alias objects on which she is checkin g protocols, and focus allows the reverse. A programmer can alias data structures that point to linear objects and use focus for safe access to those objects. We discuss how we implemented these ideas in the Vault programming language.
A Direct Approach to Control-Flow Sensitive Region-Based Memory Management
, 2001
"... Region-based memory management can be used to control dynamic memory allocations and deallocations safely and efficiently. Existing (direct-style) region systems that statically guarantee region safety---no dereferencing of dangling pointers---are based on refinements of Tofte and Talpin's seminal w ..."
Abstract
-
Cited by 31 (1 self)
- Add to MetaCart
Region-based memory management can be used to control dynamic memory allocations and deallocations safely and efficiently. Existing (direct-style) region systems that statically guarantee region safety---no dereferencing of dangling pointers---are based on refinements of Tofte and Talpin's seminal work on region inference for managing heap memory in stacks of regions.
Reasoning about Hierarchical Storage
, 2003
"... can encode invariants necessary for reasoning about hierarchical storage. We show how the logic can be used to describe the layout of bits in a memory word, the layout of memory words in a region, the layout of regions in an address space, or even the layout of address spaces in a multiprocessing e ..."
Abstract
-
Cited by 23 (7 self)
- Add to MetaCart
can encode invariants necessary for reasoning about hierarchical storage. We show how the logic can be used to describe the layout of bits in a memory word, the layout of memory words in a region, the layout of regions in an address space, or even the layout of address spaces in a multiprocessing environment. We provide a semantics for our formulas and then apply the semantics and logic to the task of developing a type system for Mini-KAM, a simplified version of the abstract machine used in the ML Kit with regions.
The Logical Approach to Stack Typing
, 2003
"... We develop a logic for reasoning about adjacency and separation of memory blocks, as well as aliasing of pointers. We provide a memory model for our logic and present a sound set of natural deduction-style inference rules. We deploy the logic in a simple type system for a stack-based assembly langu ..."
Abstract
-
Cited by 22 (4 self)
- Add to MetaCart
We develop a logic for reasoning about adjacency and separation of memory blocks, as well as aliasing of pointers. We provide a memory model for our logic and present a sound set of natural deduction-style inference rules. We deploy the logic in a simple type system for a stack-based assembly language. The connectives for the logic provide a flexible yet concise mechanism for controlling allocation, deallocation and access to both heap-allocated and stack-allocated data.
A Retrospective on Region-Based Memory Management
- Higher-Order and Symbolic Computation Journal
, 2004
"... We report on our experience with designing, implementing, proving correct, and evaluating a region-based memory management system. ..."
Abstract
-
Cited by 10 (0 self)
- Add to MetaCart
We report on our experience with designing, implementing, proving correct, and evaluating a region-based memory management system.
Combining Garbage Collection and Region Inference in The ML Kit
, 1999
"... Machine ...................... 148 9.1.1 Grammar for KAM .................... 149 9.2 Code Generation ......................... 151 9.2.1 9.2.2 9.2.3 9.2.4 9.2.5 9.2.6 Constants and Access Types .............. 151 Allocation Points ..................... 152 Set Storage Modes .................. ..."
Abstract
-
Cited by 7 (4 self)
- Add to MetaCart
Machine ...................... 148 9.1.1 Grammar for KAM .................... 149 9.2 Code Generation ......................... 151 9.2.1 9.2.2 9.2.3 9.2.4 9.2.5 9.2.6 Constants and Access Types .............. 151 Allocation Points ..................... 152 Set Storage Modes .................... 155 Call Convention ..................... 156 Functions ......................... 158 Applications ....................... 159 III The Garbage Collector 167 10 Basic Garbage Collection Algorithms 168 10.1 Fundamentals ........................... 168 10.2 Reference Counting ........................ 170 10.3 Mark-Sweep Collection ..................... 173 10.4 Mark-Compact Collection .................... 174 10.5 Copying Garbage Collection ................... 177 10.5.1 Simple Stop and Copy .................. 178 10.5.2 Cheneys Algorithm ................... 182 10.5.3 Generational Garbage Collection ............ 184 10.6 Comparing The Algorithms ................... 185 11 Garbage Collection of Regions. 188 11.1 Algorithm Using Recursion ................... 188 11.2 Cheneys Algorithm and Regions ................ 189 11.2.1 A Stack of Values .................... 191 11.2.2 A Stack of Regions .................... 191 11.3 A Revised Region and Region Page Descriptor ........ 194 11.4 The Garbage Collection Algorithm ............... 195 11.5 Finite Regions .......................... 197 11.5.1 Recursive Data Structures ................ 198 11.6 Garbage Collect a Few Regions Only .............. 199 11.7 Using Only One Global Region ................. 201 11.8 When to Increase The Heap ................... 201 12 Data Representation 203 12.1 Scalar and Pointer Records ................... 204 12.2 Tagging Objects ......................... 205 12.3 Eliminating Fragmented Objects .........
On Regions and Linear Types (Extended Abstract)
- In Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
, 2001
"... We explore how two different mechanisms for reasoning about state, linear typing and the type, region and effect discipline, complement one another in the design of a strongly typed functional programming language. The basis for our language is a simple lambda calculus containing first-class memory ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
We explore how two different mechanisms for reasoning about state, linear typing and the type, region and effect discipline, complement one another in the design of a strongly typed functional programming language. The basis for our language is a simple lambda calculus containing first-class memory regions, which are explicitly passed as arguments to functions, returned as results and stored in user-defined data structures. In order to ensure appropriate memory safety properties, we draw upon the literature on linear type systems to help control access to and deallocation of regions. In fact, we use two different interpretations of linear types, one in which multiple-use values are freely copied and discarded and one in which multiple-use values are explicitly reference-counted, and show that both interpretations give rise to interesting invariants for manipulating regions. We also explore new programming paradigms that arise by mixing first-class regions and conventional linear data structures.
A Simplified Account of Region Inference
, 2001
"... : Region inference is a program analysis which statically determines regions of memory in which values are stored. Regions are allocated and de-allocated according to a stack discipline. Region inference is an attractive alternative to dynamic memory management via garbage collection for the impleme ..."
Abstract
- Add to MetaCart
: Region inference is a program analysis which statically determines regions of memory in which values are stored. Regions are allocated and de-allocated according to a stack discipline. Region inference is an attractive alternative to dynamic memory management via garbage collection for the implementation of mission-critical applications, of inter-operating system components, of certiable software. In the aim of putting region-based memory management to work for the design and implementation of real-time system software, the goal of the present article is to consolidate present knowledge on region-based memory management by giving a simplied account of region inference. We achieve this goal by giving an inductive proof of correctness for region inference w.r.t. a small step operational semantics and by dening a sound, xed-point iterative, inference algorithm. Key-words: Type inference, program analysis, memory management (Rsum : tsvp) Unit de recherche INRIA Rennes IRISA, Campu...

