X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2Fsm%2FSanity.c;h=2069711bafdbdb3dd2287427c0ce6846d5652bb3;hp=14230779d71db9852e2eb11c3f3208b2bac157f9;hb=2726a2f10256710cc6ed80b1098cb32e121e1be7;hpb=4b7fdaa8617e1fadc6175d2400d11fa1fc062c03 diff --git a/rts/sm/Sanity.c b/rts/sm/Sanity.c index 1423077..2069711 100644 --- a/rts/sm/Sanity.c +++ b/rts/sm/Sanity.c @@ -331,7 +331,8 @@ checkClosure( StgClosure* p ) ASSERT(LOOKS_LIKE_CLOSURE_PTR(bq->bh)); ASSERT(get_itbl(bq->owner)->type == TSO); - ASSERT(bq->queue == END_TSO_QUEUE || get_itbl(bq->queue)->type == TSO); + ASSERT(bq->queue == (MessageBlackHole*)END_TSO_QUEUE + || get_itbl(bq->queue)->type == TSO); ASSERT(bq->link == (StgBlockingQueue*)END_TSO_QUEUE || get_itbl(bq->link)->type == IND || get_itbl(bq->link)->type == BLOCKING_QUEUE); @@ -745,6 +746,18 @@ findMemoryLeak (void) reportUnmarkedBlocks(); } +void +checkRunQueue(Capability *cap) +{ + StgTSO *prev, *tso; + prev = END_TSO_QUEUE; + for (tso = cap->run_queue_hd; tso != END_TSO_QUEUE; + prev = tso, tso = tso->_link) { + ASSERT(prev == END_TSO_QUEUE || prev->_link == tso); + ASSERT(tso->block_info.prev == prev); + } + ASSERT(cap->run_queue_tl == prev); +} /* ----------------------------------------------------------------------------- Memory leak detection