Results 1 -
5 of
5
Space Efficient Conservative Garbage Collection
, 1993
"... We call a garbage collector conservative if it has only partial information about the location of pointers, and is thus forced to treat arbitrary bit patterns as though they might be pointers, in at least some cases. We show that some very inexpensive, but previously unused techniques can have drama ..."
Abstract
-
Cited by 103 (1 self)
- Add to MetaCart
We call a garbage collector conservative if it has only partial information about the location of pointers, and is thus forced to treat arbitrary bit patterns as though they might be pointers, in at least some cases. We show that some very inexpensive, but previously unused techniques can have dramatic impact on the effectiveness of conservative garbage collectors in reclaiming memory. Our most significant observation is that static data that appears to point to the heap should not result in misidentified references to the heap. The garbage collector has enough information to allocate around such references. We also observe that programming style has a significant impact on the amount of spuriously retained storage, typically even if the collector is not terribly conservative. Some fairly common C and C programming styles significantly decrease the effectiveness of any garbage collector. These observations suffice to explain some of the different assessments of conservative collection that have appeared in the literature.
Simple Garbage-Collector-Safety
- In 1996 SIGPLAN Conference on Programming Language Design and Implementation
, 1996
"... A conservative garbage collector can typically be used with conventionally compiled programs written in C or C++. But two safety issues must be considered. First, the source code must not hide pointers from the garbage collector. This primarily requires stricter adherence to existing restrictions in ..."
Abstract
-
Cited by 13 (2 self)
- Add to MetaCart
A conservative garbage collector can typically be used with conventionally compiled programs written in C or C++. But two safety issues must be considered. First, the source code must not hide pointers from the garbage collector. This primarily requires stricter adherence to existing restrictions in the language definition. Second, we must ensure that the compiler will not perform transformations that invalidate this requirement. We argue that the same technique can be used to address both issues. We present an algorithm for annotating source or intermediate code to either check the validity of pointer arithmetic in the source, or to guarantee that under minimal, clearly defined assumptions about the compiler, the optimizer cannot "disguise" pointers. We discuss an implementation based on a preprocessor for the GNU C compiler (gcc), and give some measurements of program slowdown.
SFIO: Safe/Fast String/File IO
- In Proc. of the Summer ’91 Usenix Conference
, 1991
"... This paper describes Sfio, a new input/output library, that can be used as a replacement for Stdio, the C language standard I/O library. Sfio is more complete, consistent, and efficient than Stdio. New facilities are provided for convenient, safe and efficient manipulation of data streams. An Sfio ..."
Abstract
-
Cited by 11 (3 self)
- Add to MetaCart
This paper describes Sfio, a new input/output library, that can be used as a replacement for Stdio, the C language standard I/O library. Sfio is more complete, consistent, and efficient than Stdio. New facilities are provided for convenient, safe and efficient manipulation of data streams. An Sfio stream may be entirely memory resident or it may correspond to some actual file. Alternative I/O disciplines can be applied to a stream to customize its behavior with respect to data transformation and exception handling. Stream pools can be maintained to guarantee stream synchronization when switching streams for I/O operations. Separate streams can be stacked on one another to make new virtual streams. Both source and binary compatibility packages are provided allowing Stdio-based programs to benefit from the new library without recoding. Sfio has been used successfully in a number of applications including many rewritten standard system utilities. Benchmark timings show that Sfio perform...
Preprocessing C++ : Substitution and Composition
- PROCEEDINGS OF THE EASTERN EUROPEAN CONFERENCE ON THE TECHNOLOGY OF OBJECT ORIENTED LANGUAGES AND SYSTEMS
, 1999
"... Problems with the lexical substitution mechanism of the C preprocessor are well known. We resolve these problems with a new syntax-based substitution mechanism for C++ based on meta-variables and metafunctions. Implementation of these meta-concepts in a C++ style leads naturally to meta-expressions ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
Problems with the lexical substitution mechanism of the C preprocessor are well known. We resolve these problems with a new syntax-based substitution mechanism for C++ based on meta-variables and metafunctions. Implementation of these meta-concepts in a C++ style leads naturally to meta-expressions and then meta-statements and a generalisation of C++ syntax. We show how meta-compilation renders the C preprocessor redundant, and offers a more intuitive and powerful programming language in which pattern solutions can be provided and Aspect-Oriented programming practiced. In a companion paper [21] we go one stage further, putting the concepts together in the context of meta-classes where meta-programming and reflection are supported at compile-time.
Extended BNF — A generic base standard
"... Generic base standards, that is, ones defining these fundamental concepts of information technology, offer a way of improving standardization in IT by enabling greater commonality. This paper looks briefly at the fundamental base standards of terminology and character sets. It then considers in more ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Generic base standards, that is, ones defining these fundamental concepts of information technology, offer a way of improving standardization in IT by enabling greater commonality. This paper looks briefly at the fundamental base standards of terminology and character sets. It then considers in more depth two other generic base concepts: syntactic metalanguages (for example, Backus Naur Form) and numeric floating-point constants. Case studies illustrate typical unnecessary variations in existing standards and demonstrate that even the simplest ideas are treated in widely different ways. 1

