You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implement a heavy-duty generational garbage collector. This should significantly improve performance for applications where allocations are frequent. It is intended primarily for use in language VMs and JITs (#12).
Tasks
Basic Implementation
Use card tables for efficient write barriers
Extremely efficent bump-pointer allocation for new generation
Properly relocate pointers
Handle "humongous objects" properly
Most GCs allocate very large objects (4KB+) directly into a dedicated space, bypassing the new generation
The text was updated successfully, but these errors were encountered:
This is much simpler, because it assumes there is only one active context.
There is no need to lock because only a single active thread can use the
garbage collector at a time.
The most important outcome of this change is that it starts to seperate
the implementation of contexts from the mark/sweep collector internals.
Eventually I'd like to seperate out the context implementation for
indpendent use. Ideally it would be shared alongside the generational
collector (#14).
There is no real performance change (for the single threaded benchmark):
Standard "sync" contexts:
binary_trees 21 46.5 sec, 385 MB
New "simple" contexts:
binary_trees 21 45.4 sec, 385 MB
GC now has a seperate and customizable allocator interface.
This should allow the tracing and compacting code tight implementation
with the internals, while still maintaining some flexibility and code reuse.
This is the first step towards seperating `zerogc-simple` into
multiple different implementations. I am planning to re-use much
of this code when I implement generational gc (#14)
Implement a heavy-duty generational garbage collector. This should significantly improve performance for applications where allocations are frequent. It is intended primarily for use in language VMs and JITs (#12).
Tasks
The text was updated successfully, but these errors were encountered: