The Ruby VM implements a classic mark/sweep GC. This GC is tightly integrated with requesting batches of objects at a time from malloc. Ruby basically asks for a 4k page, carves out some space for metadata + bitmaps, and then divides the rest up into 40-byte RVALUE objects. I think we just want our allocator to be able to provide these additional bitmaps for Ruby (or other, similar applications like cpython).
This current version is kludgey, and I think we want something more dynamic, but its a start.
The Ruby VM implements a classic mark/sweep GC. This GC is tightly integrated with requesting batches of objects at a time from
malloc
. Ruby basically asks for a 4k page, carves out some space for metadata + bitmaps, and then divides the rest up into 40-byteRVALUE
objects. I think we just want our allocator to be able to provide these additional bitmaps for Ruby (or other, similar applications likecpython
).This current version is kludgey, and I think we want something more dynamic, but its a start.