X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FRaiseAsync.c;h=d411c4110142f4a8550379ab10ad32c50a5c8d2d;hb=8ef97aa30a33fb3b536252b2c0459cdf0fd5236f;hp=9d03d07ab4be23cb9e7fc4b5e5eb5a1081f5adbe;hpb=04cddd339c000df6d02c90ce59dbffa58d2fe166;p=ghc-hetmet.git diff --git a/rts/RaiseAsync.c b/rts/RaiseAsync.c index 9d03d07..d411c41 100644 --- a/rts/RaiseAsync.c +++ b/rts/RaiseAsync.c @@ -1010,23 +1010,14 @@ raiseAsync(Capability *cap, StgTSO *tso, StgClosure *exception, if (stop_at_atomically) { ASSERT(stmGetEnclosingTRec(tso->trec) == NO_TREC); stmCondemnTransaction(cap, tso -> trec); -#ifdef REG_R1 tso->sp = frame; -#else - // R1 is not a register: the return convention for IO in - // this case puts the return value on the stack, so we - // need to set up the stack to return to the atomically - // frame properly... - tso->sp = frame - 2; - tso->sp[1] = (StgWord) &stg_NO_FINALIZER_closure; // why not? - tso->sp[0] = (StgWord) &stg_ut_1_0_unreg_info; -#endif tso->what_next = ThreadRunGHC; return; } // Not stop_at_atomically... fall through and abort the // transaction. + case CATCH_STM_FRAME: case CATCH_RETRY_FRAME: // IF we find an ATOMICALLY_FRAME then we abort the // current transaction and propagate the exception. In