diff options
| author | Simon Marlow <marlowsd@gmail.com> | 2012-10-31 12:38:06 +0000 |
|---|---|---|
| committer | Simon Marlow <marlowsd@gmail.com> | 2012-11-01 10:13:16 +0000 |
| commit | 2073e3ecc5dd0e37e097bd331f19a782eb96785d (patch) | |
| tree | d52b28a45e585ac641af72e0003a941746dbe564 | |
| parent | 232f1a2702684fe7f82a084213714adfa6162392 (diff) | |
| download | haskell-2073e3ecc5dd0e37e097bd331f19a782eb96785d.tar.gz | |
Don't clearNurseries() in parallel with -debug
It makes sanity-checking fail.
| -rw-r--r-- | includes/Rts.h | 6 | ||||
| -rw-r--r-- | rts/sm/GC.c | 8 |
2 files changed, 11 insertions, 3 deletions
diff --git a/includes/Rts.h b/includes/Rts.h index b31776828f..edb48c1a91 100644 --- a/includes/Rts.h +++ b/includes/Rts.h @@ -306,6 +306,12 @@ TICK_VAR(2) #define DEBUG_ONLY(s) doNothing() #endif +#ifdef DEBUG +#define DEBUG_IS_ON 1 +#else +#define DEBUG_IS_ON 0 +#endif + /* ----------------------------------------------------------------------------- Useful macros and inline functions -------------------------------------------------------------------------- */ diff --git a/rts/sm/GC.c b/rts/sm/GC.c index 8b92ca82cb..b9485f2c36 100644 --- a/rts/sm/GC.c +++ b/rts/sm/GC.c @@ -404,7 +404,7 @@ GarbageCollect (nat collect_gen, break; } - if (n_gc_threads != 1) { + if (!DEBUG_IS_ON && n_gc_threads != 1) { gct->allocated = clearNursery(cap); } @@ -638,7 +638,7 @@ GarbageCollect (nat collect_gen, } // Reset the nursery: make the blocks empty - if (n_gc_threads == 1) { + if (DEBUG_IS_ON || n_gc_threads == 1) { for (n = 0; n < n_capabilities; n++) { allocated += clearNursery(&capabilities[n]); } @@ -1074,7 +1074,9 @@ gcWorkerThread (Capability *cap) scavenge_until_all_done(); - gct->allocated = clearNursery(cap); + if (!DEBUG_IS_ON) { + gct->allocated = clearNursery(cap); + } #ifdef THREADED_RTS // Now that the whole heap is marked, we discard any sparks that |
