Moving GC

Fawzi Mohamed fmohamed at mac.com
Sat Dec 13 09:12:28 PST 2008


On 2008-12-13 04:24:54 +0100, dsimcha <dsimcha at yahoo.com> said:

> == Quote from Christopher Wright (dhasenan at gmail.com)'s article
>> It means that you can't use one block for objects of multiple types.
> 
> Sure you can, without being any worse off than under the current 
> scheme.  Mark the
> contents of the memory as an array of void*s.  This would have the same 
> effect as
> marking it for GC scanning under the current scheme, basically making 
> the GC scan
> the block conservatively.  Furthermore, if you're storing value types 
> or pointers
> to reference types that also have a pointer stored in a GC-scanned 
> block, set the
> typeinfo to byte or something, and you have the equivalent of setting 
> the NO_SCAN bit.

it should be an array of void (or union pointer, non pointer), they 
should be pinned.
Also all pointers given to C (and potentially pointers reachable from 
them) should be pinned.
This makes system programming difficult.
If one has a closed system with just D then it is easier.

Fawzi




More information about the Digitalmars-d mailing list