Pure dynamic casts?
Jeremie Pelletier
jeremiep at gmail.com
Tue Sep 22 04:32:57 PDT 2009
Daniel Keep wrote:
>
> Jason House wrote:
>> Dynamic casts are pure. They don't use global state, and have the same output for the same reference as input. Interestingly, dynamic cast results are independent of intervening mutable calls... So there's even greater opportunity for optimization.
>
> What if the GC just happens to re-use that address for a different object?
I don't know about druntime's GC but I used to have this issue with my
own GC. I would cast an object to an interface type which would make its
only reference point to a different 16bytes block, remember that bit
fields in the GC are aligned to 16bytes, and the allocation had
therefore no more reachable pointers, or so the GC thought.
What fixed it was to adjust the scan phase and align found pointers to
the block size of its corresponding allocation. That way the GC won't
reuse the address of reachable objects no matter what interface or
subclass they are casted to.
More information about the Digitalmars-d
mailing list