Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/2073e3ecc5dd0e37e097bd331f19a782eb96785d

>---------------------------------------------------------------

commit 2073e3ecc5dd0e37e097bd331f19a782eb96785d
Author: Simon Marlow <marlo...@gmail.com>
Date:   Wed Oct 31 12:38:06 2012 +0000

    Don't clearNurseries() in parallel with -debug
    
    It makes sanity-checking fail.

>---------------------------------------------------------------

 includes/Rts.h |    6 ++++++
 rts/sm/GC.c    |    8 +++++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/includes/Rts.h b/includes/Rts.h
index b317768..edb48c1 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 8b92ca8..b9485f2 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



_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to