X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FCapability.c;h=c27733fa644ccc4b751351297db952c004fa554b;hb=fa0cd53b30a261ce282757c12c775e7d6194fd62;hp=05e9126420cd9557f9f8a9128cc604e71d64a257;hpb=8b18faef8aeaf40150c208272a2fc117611e8ae8;p=ghc-hetmet.git diff --git a/rts/Capability.c b/rts/Capability.c index 05e9126..c27733f 100644 --- a/rts/Capability.c +++ b/rts/Capability.c @@ -79,6 +79,10 @@ findSpark (Capability *cap) spark = tryStealSpark(cap); if (spark != NULL) { cap->sparks_converted++; + + // Post event for running a spark from capability's own pool. + postEvent(cap, EVENT_RUN_SPARK, cap->r.rCurrentTSO->id, 0); + return spark; } @@ -113,6 +117,11 @@ findSpark (Capability *cap) "cap %d: Stole a spark from capability %d", cap->no, robbed->no); cap->sparks_converted++; + + postEvent(cap, EVENT_STEAL_SPARK, + cap->r.rCurrentTSO->id, robbed->no); + + return spark; } // otherwise: no success, try next one @@ -810,7 +819,7 @@ static void freeCapability (Capability *cap) { stgFree(cap->mut_lists); -#if defined(THREADED_RTS) || defined(PARALLEL_HASKELL) +#if defined(THREADED_RTS) freeSparkPool(cap->sparks); #endif }