nonmoving gc: Various fixes
This includes a number of fixes (some recent regressions, some long-running bugs) in the non-moving GC found in a debugging session on ghc/ghc-debug>.
Specifically,
- Various bugs pertaining to slop zeroing. Strictly speaking this only affects the
-debug
build. - Don't join to the marking thread on shutdown; the only reason that this worked previously is that the implementation of
osJoinThread
handled errors incorrectly. - Add a missing write barrier in
shrinkSmallByteArray#
- Add a missing write barrier in handling of
THROWTO
messages - Fix a tricky regression due to a rebase error in aad1f803. Fixes #18997 (closed).
- Fix a missing marking of promoted large objects (as described in
Note [Non-moving GC: Marking evacuated objects]
).
Edited by Ben Gamari