On Tue, 13 Jul 2010 22:42:05 +0300, bearophile <[email protected]> wrote:

So in SafeD the delete operation can be replaced by something safer, a way to tell the GC to deallocate just a specific object, walking the graph and setting to null all the inbound pointers (this is a slower operation).

I'd just like to point out that, without some careful considerations, this would allow any code to modify memory belonging to completely unrelated code it knows nothing about. Without careful planning it could cause the program to crash due to null pointer dereferences in completely unrelated areas, leaving you scratching your head why is that pointer null in the first place.

I think that a better idea is "safe deletion": make a precise GC examine the entire graph and make sure that the calling code has the only reference to the object before deleting it.

(This isn't practical anyway, because it'd probably be too slow to be useful for most cases, and doesn't apply to current D implementations.)

--
Best regards,
 Vladimir                            mailto:[email protected]

Reply via email to