On Tuesday, 27 May 2014 at 02:52:48 UTC, Etienne Cimon wrote:
I've been looking at the GC and found that the main problem is
that there's no clear information about the pointers. At least
smart pointers have some info inside them but GC pointers are
completely plain 4-8 bytes and nothing else.
On 64 bit platform 8 bytes is sufficient if you control the
allocator:
1. Avoid allocating non-GC memory from specific address range.
2. Set a max-size for GC allocated objects.
Then the test becomes this:
if ((ptr & NONGCMASK)==0){
heapinfo_ptr = ptr&MASK;
// process ptr
}