I added a document to google docs under Tachyon/Tech Notes detailing the changes I can see being necessary to our current implementation in order to facilitate the GC implementation.
I think I'll be able to complete my part by next Wednesday. I basically intend to auto-generate C functions that can call a GC visit function on all the pointers in heap objects. This code will be generated in function of our object layouts. It should also include debugging assertions (sanity checks) to make sure we aren't improperly leaking object references in raw pointers, or have object references pointing outside of our heap.
I would also advise to perhaps have GC maps with *2 bits per object*. This way we can indicate whether stack slots are boxed references, unboxed references, raw pointers or other. This would allow more sanity checks in the GC, which might save us valuable debugging time (we'll know much faster if we're doing something stupid). Perhaps including some kind of function identifier in the GC map might also be useful (it would also facilitate stack trace generation).
- Maxime