Nasal GC Musings: Difference between revisions

Jump to navigation Jump to search
Line 61: Line 61:
** Patch the existing GC to allocate different pools for each generation {{Progressbar|70}}
** Patch the existing GC to allocate different pools for each generation {{Progressbar|70}}
** update mark() to increment a new gcSurvivals counter
** update mark() to increment a new gcSurvivals counter
** update reap() to detect objects that have previously survived GC
** update reap() to detect objects that have previously survived GC using a configurable threshold (possibly per generation?)
** update reap() to by default only sweep the first generation
** update reap() to by default only sweep the first generation (generation 0)
** implement a new function to promote objects from one generation to another
** implement a new function to promote objects from one generation to another
** update the naRef after moving one object to another pool (use doswap)
** update the naRef after moving one object to another pool (use doswap), also free up dead blocks afterwards as per naGC_swapfree()
* Provide readonly stats to inspect the GC {{Progressbar|10}}
* Provide readonly stats to inspect the GC {{Progressbar|10}}
* Provide hooks to register custom callbacks to control GC (e.g. from FlightGear) {{Progressbar|10}}
* Provide hooks to register custom callbacks to control GC (e.g. from FlightGear) {{Progressbar|10}}

Navigation menu