libera/#sicl - IRC Chatlog
Search
3:41:30
hayley
One minor thing is that we could also mark incoherent objects (or slots), so that they aren't added to the list again upon further races; a similar technique is used with coalescing reference counting. But the idea is still that only racing writes have to be recohered, so it might not matter much; and we'd have three bitmaps I think (is object marked, is object replicated, is slot/object incoherent).
3:47:19
hayley
Coalescing can be done at either object or slot granularity; Levanoni and Petrank described an algorithm with slot granularity, but actually implemented the algorithm with object granularity, and LXR uses slot granularity. Though, if we need a slot for a forwarding pointer, the "is object replicated" bit can be stored in the same bitmap as the "is slot incoherent" bitmap, as the forwarding pointer cannot be incoherent.
4:05:21
hayley
Wait, how do we find the local replica if we have the address of the global replica? We could have a...reverse forwarding pointer in the global heap, too, but we'd need to shrink the allocation. I think shrinking allocations was mentioned when discussing how to implement bignums, but I forgot.
4:51:02
hayley
I guess a hash table would suffice. We can also use the forwarding pointer to store pretenuring information if an object is not forwarded, too.