Issues before enabling GC
The GC rewrite should have fixed most of the problems, however, there are a few known issues that need to be done before enabling GC.
-
#21 about some utility functions in C that help find references in stack/heap. They need to be fixed for correctness. And also
set_low_water_mark()
should be called by the VM to set a limit for stack scanning. Alternatively we may also let GC know about stack bounds so it won't go beyond the stack memory. - inserting yieldpoint.
- Allowing finding base reference for internal references. As we have 16 bytes min size and 16 bytes min alignment of objects, for any reference we mask it to 16 bytes, and see if it contains a valid object encoding (non-empty, or with certain bits set).