From 753c98023aafda898c6106f90d3af8a033d0c109 Mon Sep 17 00:00:00 2001 From: Ben Gamari Date: Sat, 22 Oct 2022 21:41:42 +0000 Subject: nonmoving: Post-sweep sanity checking --- rts/sm/NonMoving.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/rts/sm/NonMoving.c b/rts/sm/NonMoving.c index 41dc8bfe8c..90192af4a7 100644 --- a/rts/sm/NonMoving.c +++ b/rts/sm/NonMoving.c @@ -26,8 +26,11 @@ #include "NonMovingCensus.h" #include "StablePtr.h" // markStablePtrTable #include "Schedule.h" // markScheduler +#include "Sanity.h" #include "Weak.h" // dead_weak_ptr_list +#define NONCONCURRENT_SWEEP + struct NonmovingHeap nonmovingHeap; uint8_t nonmovingMarkEpoch = 1; @@ -1196,7 +1199,7 @@ static void nonmovingMark_(MarkQueue *mark_queue, StgWeak **dead_weaks, StgTSO * #endif // Everything has been marked; allow the mutators to proceed -#if defined(THREADED_RTS) +#if defined(THREADED_RTS) && !defined(NONCONCURRENT_SWEEP) nonmoving_write_barrier_enabled = false; nonmovingFinishFlush(task); #endif @@ -1235,6 +1238,15 @@ static void nonmovingMark_(MarkQueue *mark_queue, StgWeak **dead_weaks, StgTSO * nonmovingTraceAllocatorCensus(); #endif +#if defined(THREADED_RTS) && defined(NONCONCURRENT_SWEEP) +#if defined(DEBUG) + checkNonmovingHeap(&nonmovingHeap); + checkSanity(true, true); +#endif + nonmoving_write_barrier_enabled = false; + nonmovingFinishFlush(task); +#endif + // TODO: Remainder of things done by GarbageCollect (update stats) #if defined(THREADED_RTS) -- cgit v1.2.1