Fix sanity checking after fix to #2917
authorSimon Marlow <marlowsd@gmail.com>
Thu, 12 Mar 2009 09:38:55 +0000 (09:38 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Thu, 12 Mar 2009 09:38:55 +0000 (09:38 +0000)
rts/Sanity.c
rts/Sanity.h
rts/sm/Storage.c

index 20507ca..3f4b3cf 100644 (file)
@@ -633,10 +633,12 @@ checkHeapChunk(StgPtr start, StgPtr end)
 #endif
 
 void
-checkChain(bdescr *bd)
+checkLargeObjects(bdescr *bd)
 {
   while (bd != NULL) {
-    checkClosure((StgClosure *)bd->start);
+    if (!(bd->flags & BF_PINNED)) {
+      checkClosure((StgClosure *)bd->start);
+    }
     bd = bd->link;
   }
 }
index 05803df..65d7053 100644 (file)
@@ -20,7 +20,7 @@
 /* debugging routines */
 extern void checkHeap      ( bdescr *bd );
 extern void checkHeapChunk ( StgPtr start, StgPtr end );
-extern void checkChain     ( bdescr *bd );
+extern void checkLargeObjects ( bdescr *bd );
 extern void checkTSO       ( StgTSO* tso );
 extern void checkGlobalTSOList ( rtsBool checkTSOs );
 extern void checkStaticObjects ( StgClosure* static_objects );
index 9dea30e..f38842b 100644 (file)
@@ -1466,7 +1466,7 @@ checkSanity( void )
 
     if (RtsFlags.GcFlags.generations == 1) {
        checkHeap(g0s0->blocks);
-       checkChain(g0s0->large_objects);
+       checkLargeObjects(g0s0->large_objects);
     } else {
        
        for (g = 0; g < RtsFlags.GcFlags.generations; g++) {
@@ -1477,7 +1477,7 @@ checkSanity( void )
                ASSERT(countBlocks(generations[g].steps[s].large_objects)
                       == generations[g].steps[s].n_large_blocks);
                checkHeap(generations[g].steps[s].blocks);
-               checkChain(generations[g].steps[s].large_objects);
+               checkLargeObjects(generations[g].steps[s].large_objects);
            }
        }