On Feb 22, 2012, at 10:56 AM, Benjamin Thaut wrote:
> 
> 5) pointer / reference changed callback
> 
> Every time a pointer / reference is changed the D compiler emits a call into 
> the runtime and passes the new value of the reference / pointer with it.
> 
> void _d_pointerChanged(void *ptr);

D can call assembler, C routines like memset(), plain old opaque C library 
code, etc.  What should the D compiler do in light of all the sources of memory 
changes that it can't monitor?

> 6) Different interface for the GC
> 
> The current interface to the GC would have to change because the "this block 
> of memory might contain a pointer" approach wouldn't work anymore. For 
> example a block of memory and a delegate which iterates over all pointers 
> within the memory block could be used for user allocated memory blocks. There 
> should be a separate allocator function provided by the GC that allocates 
> memory that does not get moved around so it can be used to pass it to non 
> garbage collected code.

I posted a suggested new GC interface do the runtime mailing list 6 or so 
months ago.  In short, I do think the current interface is lacking.  Also, CDGC 
does support precise scanning and runs with Druntime.  The big problem there is 
that CDGC is based on the Tango GC (where Druntime's GC originated) and someone 
needs to review all the GC changes since the Druntime project was created to 
see what may need to be merged into CDGC.  I started on this once, but it 
turned out to be more work than I had time for.

Reply via email to