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
-debugbuild. - Don't join to the marking thread on shutdown; the only reason that this worked previously is that the implementation of
osJoinThreadhandled errors incorrectly. - Add a missing write barrier in
shrinkSmallByteArray# - Add a missing write barrier in handling of
THROWTOmessages - 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