The problem with the D GC

Kyle Furlong kylefurlong at gmail.com
Tue Jan 9 14:13:18 PST 2007


Frits van Bommel wrote:
> Ralf Schneider wrote:
>> It dosen't seem so hard for me to let the compiler set such an 
>> attribute on arrays without pointers...
> 
> It's pretty hard if you can't modify the compiler ;).
> Sean can't modify what DMD does (at least, not directly). He _can_ 
> (directly) modify what the runtime library does by replacing it, which 
> is what he's done.
> He (or anyone else, for that matter) might be able to implement this in 
> GDC though...
> And Walter might be convinced to implement it in DMD (or, if it's 
> front-end only code, accept a patch that implements it).
> 
> Of course, that still leaves arrays of structs, which may contain both 
> pointers and non-pointers.
> What we really need is a way for the GC to know what the type of the 
> memory is, or at least where the pointers are. This may be possible by 
> adding this info to TypeInfo & subclasses[1]. But then every memory 
> block would need a pointer to the relevant TypeInfo (or some condensed 
> form of this information, like flags for "only pointers" and "no 
> pointers", with TypeInfo pointer only if both are false).
> This would definitely require some sort of compiler support though; it 
> would need to generate appropriate type information for structs, objects 
> (the actual memory, not the references) and unions.
> It would then need to supply this information to the GC in the runtime, 
> requiring extra code generation.
> 
> 
> [1]: This could be as simple as supplying a member function that 
> performs a callback for every offset containing a pointer.

According to a conversation I had with Walter a month or two ago, this 
is the direction we are going. With this sort of type information, 
other, more modern GC implementations will become possible, one of which 
I hope to write. :D



More information about the Digitalmars-d mailing list