Suggestion: noInternalPointers property

Sean Kelly sean at invisibleduck.org
Wed Aug 6 17:03:05 PDT 2008


== Quote from dsimcha (dsimcha at yahoo.com)'s article
> As I've mentioned previously, D's partially conservative garbage collection is
> often a significant limitation for me when working with large amounts of data.
>  As a workaround, I'd like to suggest that the GC be given a
> noInternalPointers function.  When called with a pointer to the start of a
> block, it would tell the GC to only consider pointers to the start of the
> block, not internal pointers.  This would prevent false pointers from wreaking
> havoc on large data structures.  In exchange, you'd have to be careful that a
> reference to the start of the data structure was somewhere on the stack.  Of
> course, you could still pass internal around all you wanted as long as you
> didn't try to return an internal pointer from the function that allocated the
> data structure.
> The noInternalPointers property could also be a property of builtin dynamic
> arrays.  Appending a large amount of times to a large array breaks the GC in
> the current form because, when the array gets reallocated, the old memory
> blocks are not necessarily cleaned up due to the false pointer problem.  If an
> array has the noInternalPointers property, every time it is reallocated due to
> resizing, the pointer to the start of it would be automatically marked with
> the noInternalPointers attribute.
> Does all this sound feasible/reasonable?

It means that slices of an array won't keep the array data alive, but other than
that I think it's reasonable.


Sean



More information about the Digitalmars-d mailing list