• 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 Direct Approach to Control-Flow Sensitive Region-Based Memory Management (2001)

by Fritz Henglein, Henning Makholm, Henning Niss
Add To MetaCart

Tools

Sorted by:
Results 1 - 10 of 25
Next 10 →

Region-Based Memory Management in Cyclone

by Dan Grossman , Greg Morrisett, Trevor Jim, Michael Hicks, Yanling Wang, James Cheney - IN PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION (PLDI'02) , 2002
"... Cyclone is a type-safe programming language derived from C. The primary design goal of Cyclone is to let programmers control data representation and memory management without sacrificing type-safety. In this paper, we focus on the region-based memory management of Cyclone and its static typing disci ..."
Abstract - Cited by 164 (13 self) - Add to MetaCart
Cyclone is a type-safe programming language derived from C. The primary design goal of Cyclone is to let programmers control data representation and memory management without sacrificing type-safety. In this paper, we focus on the region-based memory management of Cyclone and its static typing discipline. The design incorporates several advancements, including support for region subtyping and a coherent integration with stack allocation and a garbage collector. To support separate compilation, Cyclone requires programmers to write some explicit region annotations, but a combination of default annotations, local type inference, and a novel treatment of region e#ects reduces this burden. As a result, we integrate C idioms in a region-based framework. In our experience, porting legacy C to Cyclone has required altering about 8% of the code; of the changes, only 6% (of the 8%) were region annotations.

Adoption and Focus: Practical Linear Types for Imperative Programming

by Manuel Fähndrich , Robert DeLine - 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 140 (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.

Experience with safe manual memory-management in cyclone

by Michael Hicks, Greg Morrisett, Dan Grossman, Trevor Jim - In Proc. of the 4th international symposium on Memory management (ISMM , 2004
"... The goal of the Cyclone project is to investigate type safety for low-level languages such as C. Our hardest challenge has been providing programmers control over memory management while retaining type safety. This paper reports on our experience trying to integrate and effectively use two previousl ..."
Abstract - Cited by 26 (7 self) - Add to MetaCart
The goal of the Cyclone project is to investigate type safety for low-level languages such as C. Our hardest challenge has been providing programmers control over memory management while retaining type safety. This paper reports on our experience trying to integrate and effectively use two previously proposed, type-safe memory management mechanisms: statically-scoped regions and unique pointers. We found that these typing mechanisms can be combined to build alternative memory-management abstractions, such as reference counted objects and arenas with dynamic lifetimes, and thus provide a flexible basis. Our experience—porting C code and building new applications for resource-constrained systems—confirms that experts can use these features to improve memory footprint and sometimes to improve throughput when used instead of, or in combination with, a conservative garbage collector. 1

Safe and flexible memory management in Cyclone

by Michael Hicks, Greg Morrisett, Dan Grossman, Trevor Jim , 2003
"... Cyclone is a type-safe programming language intended for applications requiring control over memory management. Our previous work on Cyclone included support for stack allocation, lexical region allocation, and a garbage-collected heap. We achieved safety (i.e., prevented dangling pointers) through ..."
Abstract - Cited by 14 (2 self) - Add to MetaCart
Cyclone is a type-safe programming language intended for applications requiring control over memory management. Our previous work on Cyclone included support for stack allocation, lexical region allocation, and a garbage-collected heap. We achieved safety (i.e., prevented dangling pointers) through a region-based type-and-effects system. This paper describes some new memory-management mechanisms that we have integrated into Cyclone: dynamic regions, unique pointers, and reference-counted objects. Our experience shows that these new mechanisms are well suited for the timely recovery of objects in situations where it is awkward to use lexical regions. Crucially, programmers can write reusable functions without unnecessarily restricting callers’ choices among the plethora of memory-management options. To achieve this goal, Cyclone employs a combination of polymorphism and scoped constructs that temporarily let us treat objects as if they were allocated in a lexical region. 1.

A Retrospective on Region-Based Memory Management

by Mads Tofte, Lars Birkedal, Martin Elsman, Niels Hallenberg - 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.

On Enabling the WAM with Region Support

by Henning Makholm, Konstantinos Sagonas - In Proceedings of the 18th International Conference on Logic Programming , 2002
"... Region-based memory management is an attractive alternative to garbage collection. It relies on a compile-time analysis to annotate the program with explicit allocation and deallocation instructions, where lifetimes of memory objects are grouped together in regions. This paper investigates how to ..."
Abstract - Cited by 9 (0 self) - Add to MetaCart
Region-based memory management is an attractive alternative to garbage collection. It relies on a compile-time analysis to annotate the program with explicit allocation and deallocation instructions, where lifetimes of memory objects are grouped together in regions. This paper investigates how to adapt the runtime part of region-based memory management to the WAM setting. We present additions to the memory architecture and instruction set of the WAM that are necessary to implement regions. We extend an optimized WAM-based Prolog implementation with a region-based memory manager which supports backtracking with instant reclamation, and cuts. The performance of region-based execution is compared with that of the baseline garbage-collected implementation on several benchmark programs. A region-enabled WAM performs competitively and often results in time and/or space improvements.

Safe Manual Memory Management in Cyclone

by Nikhil Swamy, Michael Hicks, Greg Morrisett, Dan Grossman, Trevor Jim
"... The goal of the Cyclone project is to investigate how to make a low-level C-like language safe. Our most difficult challenge has been providing programmers control over memory management while retaining safety. This paper describes our experience trying to integrate and use effectively two previousl ..."
Abstract - Cited by 6 (3 self) - Add to MetaCart
The goal of the Cyclone project is to investigate how to make a low-level C-like language safe. Our most difficult challenge has been providing programmers control over memory management while retaining safety. This paper describes our experience trying to integrate and use effectively two previously-proposed, safe memory-management mechanisms: statically-scoped regions and tracked pointers. We found that these typing mechanisms can be combined to build alternative memory-management abstractions, such as reference counted objects and arenas with dynamic lifetimes, and thus provide a flexible basis. Our experience—porting C programs and device drivers, and building new applications for resource-constrained systems—confirms that experts can use these features to improve memory footprint and sometimes to improve throughput when used instead of, or in combination with, conservative garbage collection.

lfd_infer: an Implementation of a Static Inference on Heap Space Usage

by Steffen Jost , 2004
"... We will exhibit an implementation of the static prediction of heap space usage for first-order functional programs as proposed by M. Hofmann and S. Jost in 2003. The implementation shows... ..."
Abstract - Cited by 4 (0 self) - Add to MetaCart
We will exhibit an implementation of the static prediction of heap space usage for first-order functional programs as proposed by M. Hofmann and S. Jost in 2003. The implementation shows...

Towards region-based memory management for Mercury programs

by Quan Phan, Gerda Janssens - In CICLOPS , 2006
"... Abstract. Region-based memory management is a form of compiletime memory management, well-known from the functional programming world. This paper describes region-based memory management for the Mercury language using some points-to graphs that model the partition of the memory used by a program int ..."
Abstract - Cited by 4 (3 self) - Add to MetaCart
Abstract. Region-based memory management is a form of compiletime memory management, well-known from the functional programming world. This paper describes region-based memory management for the Mercury language using some points-to graphs that model the partition of the memory used by a program into separate regions and distribute the values of the program’s variables over the regions. First, a region analysis determines the different regions in the program. Second, the liveness of the regions is computed. Finally, a program transformation adds region annotations to the program for region support. Our approach obtains good results for a restricted set of deterministic Mercury programs and is a valid starting point to make region-based memory management work with general Mercury programs. 1

Static region analysis for Mercury ⋆

by Quan Phan, Gerda Janssens
"... Abstract. Region-based memory management is a form of compiletime memory management, well-known from the functional programming world. This paper describes a static region analysis for the logic programming language Mercury. We use region points-to graphs to model the partitioning of the memory used ..."
Abstract - Cited by 4 (3 self) - Add to MetaCart
Abstract. Region-based memory management is a form of compiletime memory management, well-known from the functional programming world. This paper describes a static region analysis for the logic programming language Mercury. We use region points-to graphs to model the partitioning of the memory used by a program into separate regions. The algorithm starts with a region points-to analysis that determines the different regions in the program. We then compute the liveness of the regions by using an extended live variable analysis. Finally, a program transformation adds region annotations to the program for region support. These annotations generate data for a region simulator that generates reports on the memory behaviour of region-annotated programs. Our approach obtains good memory consumption for several benchmark programs; for some of them it achieves optimal memory management. 1
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