Proposal: traced pointers

%u u at uuu.uuu
Mon Jan 15 00:21:44 PST 2007


In message 46503 of this forum Oskar Linde wrote:

[ theoretical rambling omitted]
> As far as I can see, what I have to do to avoid memory leaks with a
> conservative GC, is one of the following:
> 1. move to a 64 bit architecture
> 2. manually handle all objects larger than a few hundred bytes [...]
> 3. hide all non pointer data from the GC

Oskar missed:
1a. tag all pointers with a magic number of arbitrary size

This is indeed a modification of 1) because in this way an architecture
with "pointer.sizeof + magicNumber.sizeof" is emulated, possibly including
but not restricted to 64 bit architectures.

It is not possible to implement such in a library and therefore it has to
be implemented in the core language.

In the spirit of Modula3 (which used "untraced" for pointers which are not
GC'ed and GC'ed pointers being the default) it seems recommendable to
introduce a "traced" feature into D.

traced = none; // GC is switched off
traced = marksweep; // current behaviour
traced = marksweep(0); // using 0 byte taggig = current behaviour
traced = marksweep(4); // using 4 byte tagging
...



More information about the Digitalmars-d mailing list