X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2FSparks.c;h=c7a1c9f98a8da7c148a496238c43aca17e3bfb3f;hp=615d832e33e8de18e45e095030da158dc419d843;hb=35a38acc6010d97b349092f9179c14d18f129e9b;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1 diff --git a/rts/Sparks.c b/rts/Sparks.c index 615d832..c7a1c9f 100644 --- a/rts/Sparks.c +++ b/rts/Sparks.c @@ -21,6 +21,7 @@ # include "GranSimRts.h" # endif #include "Sparks.h" +#include "Trace.h" #if defined(THREADED_RTS) || defined(PARALLEL_HASKELL) @@ -128,13 +129,15 @@ markSparkQueue (evac_fn evac) sparkp = pool->hd; to_sparkp = pool->hd; while (sparkp != pool->tl) { - ASSERT(to_sparkp<=sparkp); ASSERT(*sparkp!=NULL); ASSERT(LOOKS_LIKE_CLOSURE_PTR(((StgClosure *)*sparkp))); // ToDo?: statistics gathering here (also for GUM!) if (closure_SHOULD_SPARK(*sparkp)) { evac(sparkp); *to_sparkp++ = *sparkp; + if (to_sparkp == pool->lim) { + to_sparkp = pool->base; + } n++; } else { pruned_sparks++; @@ -149,19 +152,18 @@ markSparkQueue (evac_fn evac) PAR_TICKY_MARK_SPARK_QUEUE_END(n); #if defined(PARALLEL_HASKELL) - IF_DEBUG(scheduler, - debugBelch("markSparkQueue: marked %d sparks and pruned %d sparks on [%x]", - n, pruned_sparks, mytid)); + debugTrace(DEBUG_sched, + "marked %d sparks and pruned %d sparks on [%x]", + n, pruned_sparks, mytid); #else - IF_DEBUG(scheduler, - debugBelch("markSparkQueue: marked %d sparks and pruned %d sparks\n", - n, pruned_sparks)); + debugTrace(DEBUG_sched, + "marked %d sparks and pruned %d sparks", + n, pruned_sparks); #endif - IF_DEBUG(scheduler, - debugBelch("markSparkQueue: new spark queue len=%d; (hd=%p; tl=%p)\n", - sparkPoolSize(pool), pool->hd, pool->tl)); - + debugTrace(DEBUG_sched, + "new spark queue len=%d; (hd=%p; tl=%p)\n", + sparkPoolSize(pool), pool->hd, pool->tl); } } @@ -825,8 +827,9 @@ markSparkQueue(void) // ToDo?: statistics gathering here (also for GUM!) sp->node = (StgClosure *)MarkRoot(sp->node); } + IF_DEBUG(gc, - debugBelch("@@ markSparkQueue: spark statistics at start of GC:"); + debugBelch("markSparkQueue: spark statistics at start of GC:"); print_sparkq_stats()); }