X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FRaiseAsync.c;h=c8a38565afcd9aa9af2c506cbc695803562e63f7;hb=21146fa414558ee31b08b14792feed71778bccdf;hp=a0f78eeff728d517c7c3f41ea844e8ece11d7d47;hpb=0856ac59cfb455d32a3042317fdba0f5e85cab9c;p=ghc-hetmet.git diff --git a/rts/RaiseAsync.c b/rts/RaiseAsync.c index a0f78ee..c8a3856 100644 --- a/rts/RaiseAsync.c +++ b/rts/RaiseAsync.c @@ -16,7 +16,7 @@ #include "Schedule.h" #include "Updates.h" #include "STM.h" -#include "Sanity.h" +#include "sm/Sanity.h" #include "Profiling.h" #if defined(mingw32_HOST_OS) #include "win32/IOManager.h" @@ -150,6 +150,8 @@ throwTo (Capability *cap, // the Capability we hold { StgWord status; + ASSERT(target != END_TSO_QUEUE); + // follow ThreadRelocated links in the target first while (target->what_next == ThreadRelocated) { target = target->_link; @@ -169,6 +171,8 @@ retry: debugTrace(DEBUG_sched, "throwTo: retrying..."); check_target: + ASSERT(target != END_TSO_QUEUE); + // Thread already dead? if (target->what_next == ThreadComplete || target->what_next == ThreadKilled) { @@ -792,7 +796,7 @@ raiseAsync(Capability *cap, StgTSO *tso, StgClosure *exception, // fun field. // words = frame - sp - 1; - ap = (StgAP_STACK *)allocateLocal(cap,AP_STACK_sizeW(words)); + ap = (StgAP_STACK *)allocate(cap,AP_STACK_sizeW(words)); ap->size = words; ap->fun = (StgClosure *)sp[0]; @@ -856,7 +860,7 @@ raiseAsync(Capability *cap, StgTSO *tso, StgClosure *exception, // we've got an exception to raise, so let's pass it to the // handler in this frame. // - raise = (StgThunk *)allocateLocal(cap,sizeofW(StgThunk)+1); + raise = (StgThunk *)allocate(cap,sizeofW(StgThunk)+1); TICK_ALLOC_SE_THK(1,0); SET_HDR(raise,&stg_raise_info,cf->header.prof.ccs); raise->payload[0] = exception;