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
{{ message }}
Repository navigation
Make GC debugging and configuration first-class #87
Debugging the GC is harder than it needs to be, and its configurations are easy to break:
The verifier prints its findings with buffered printf and then traps, so the message is usually lost with the process. DebuggerTrap only fires once, and reports give an address with no class or allocation context.
Debug aids such as HX_WATCH, HX_GC_FIXED_BLOCKS and SHOW_MEM_EVENTS are enabled by editing Immix.cpp, and HXCPP_GC_DEBUG_LEVEL changes how marking works (single-threaded, recursive), so it can hide the bug being chased.
Block geometry is spread through hand-sized types. Narrowing the row counters to uint8_t silently broke HXCPP_GC_BIG_BLOCKS; the types should follow from the block size, with static checks.
Most combinations of the GC defines are never built or run together.
Activity