X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2FException.cmm;h=8ed83b37d0c5e27b1cf6a091f41de95b4343a68d;hp=c86c6d59ffd173fcc306c588976c0b27700ff5c6;hb=94363dd5c2c443db08e5d3885b582247822c43b3;hpb=9ff76535edb25ab7434284adddb5c64708ecb547 diff --git a/rts/Exception.cmm b/rts/Exception.cmm index c86c6d5..8ed83b3 100644 --- a/rts/Exception.cmm +++ b/rts/Exception.cmm @@ -84,8 +84,7 @@ INFO_TABLE_RET( stg_unblockAsyncExceptionszh_ret, if (r != 0::CInt) { if (StgTSO_what_next(CurrentTSO) == ThreadKilled::I16) { - R1 = ThreadFinished; - jump StgReturn; + jump stg_threadFinished; } else { LOAD_THREAD_STATE(); ASSERT(StgTSO_what_next(CurrentTSO) == ThreadRunGHC::I16); @@ -180,8 +179,7 @@ unblockAsyncExceptionszh_fast if (r != 0::CInt) { if (StgTSO_what_next(CurrentTSO) == ThreadKilled::I16) { - R1 = ThreadFinished; - jump StgReturn; + jump stg_threadFinished; } else { LOAD_THREAD_STATE(); ASSERT(StgTSO_what_next(CurrentTSO) == ThreadRunGHC::I16); @@ -229,8 +227,7 @@ killThreadzh_fast foreign "C" throwToSingleThreaded(MyCapability() "ptr", target "ptr", exception "ptr")[R1,R2]; if (StgTSO_what_next(CurrentTSO) == ThreadKilled::I16) { - R1 = ThreadFinished; - jump StgReturn; + jump stg_threadFinished; } else { LOAD_THREAD_STATE(); ASSERT(StgTSO_what_next(CurrentTSO) == ThreadRunGHC::I16); @@ -291,7 +288,7 @@ INFO_TABLE_RET(stg_catch_frame, #ifdef REG_R1 { Sp = Sp + SIZEOF_StgCatchFrame; - jump Sp(SP_OFF); + jump %ENTRY_CODE(Sp(SP_OFF)); } #else { @@ -299,7 +296,7 @@ INFO_TABLE_RET(stg_catch_frame, rval = Sp(0); Sp = Sp + SIZEOF_StgCatchFrame; Sp(0) = rval; - jump Sp(SP_OFF); + jump %ENTRY_CODE(Sp(SP_OFF)); } #endif @@ -431,11 +428,7 @@ retry_pop_stack: StgTSO_what_next(CurrentTSO) = ThreadKilled::I16; SAVE_THREAD_STATE(); /* inline! */ - /* The return code goes in BaseReg->rRet, and BaseReg is returned in R1 */ - StgRegTable_rRet(BaseReg) = ThreadFinished; - R1 = BaseReg; - - jump StgReturn; + jump stg_threadFinished; } /* Ok, Sp points to the enclosing CATCH_FRAME or CATCH_STM_FRAME. Pop everything