summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rts/Sanity.c6
-rw-r--r--rts/Sanity.h2
-rw-r--r--rts/sm/Storage.c4
3 files changed, 7 insertions, 5 deletions
diff --git a/rts/Sanity.c b/rts/Sanity.c
index 20507ca816..3f4b3cf7b0 100644
--- a/rts/Sanity.c
+++ b/rts/Sanity.c
@@ -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;
}
}
diff --git a/rts/Sanity.h b/rts/Sanity.h
index 05803df2ce..65d70539b0 100644
--- a/rts/Sanity.h
+++ b/rts/Sanity.h
@@ -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 );
diff --git a/rts/sm/Storage.c b/rts/sm/Storage.c
index 9dea30e193..f38842b59e 100644
--- a/rts/sm/Storage.c
+++ b/rts/sm/Storage.c
@@ -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);
}
}