[patch] Move loop structures to gc memory

Ian Lance Taylor iant@google.com
Mon May 14 22:35:00 GMT 2007


Zdenek Dvorak <rakdver@kam.mff.cuni.cz> writes:

> > > On May 14, 2007, at 11:12 AM, Ian Lance Taylor wrote:
> > Using ggc_free with GC just puts us on the road back to the problems
> > which led us to introduce GC in the first place: we didn't track our
> > memory allocations properly, so we got confused and got weird crashes.
> > We introduced GC so that it didn't matter whether we tracked our
> > memory allocations properly or not.  There was no other reason for GC.
> > When we use ggc_free, we lose the whole point of having GC.  It just
> > does not make sense.
> 
> well, sort of.  There are some structures that are hard to keep track of
> (trees and rtl, and maybe a few others), and I think it is OK to have gc
> for them.  I guess most of the other thinks that are currently kept in
> GC should not be, but it would be a bit hard to keep track of all GC
> roots if we moved them out.  Using ggc_free of course is not a nice
> solution, but not using it for structures for that we are sure that they
> are no longer reachable is wasteful.

I think that correctly keeping track of the various GC roots is
precisely as hard as correctly using ggc_free.  Both are cases where
we need to correctly determine whether we have a live pointer into GC
memory.  And indeed we've had a series of bugs over the years in which
static variables were not correctly annotated as being GC roots, just
as we've had several bugs in which ggc_free was used incorrectly.

Setting a pointer to NULL is always safe.

Ian



More information about the Gcc-patches mailing list