From: Simon Marlow Date: Fri, 29 Oct 2010 09:04:23 +0000 (+0000) Subject: fix bugs in tryTakeMVar/tryPutMVar X-Git-Tag: 2010-11-18~51 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=608311e931b84dc49f6b57bbda85b83c4878baf4;p=ghc-hetmet.git fix bugs in tryTakeMVar/tryPutMVar I'm surprised that these haven't caused any problems (or maybe they have?) --- diff --git a/rts/PrimOps.cmm b/rts/PrimOps.cmm index 4c41df7..0cf26b2 100644 --- a/rts/PrimOps.cmm +++ b/rts/PrimOps.cmm @@ -1323,7 +1323,7 @@ loop2: foreign "C" tryWakeupThread_(MyCapability() "ptr", tso) []; unlockClosure(mvar, stg_MVAR_DIRTY_info); - RET_P(val); + RET_NP(1,val); } @@ -1452,7 +1452,7 @@ loop: /* No further takes, the MVar is now full. */ StgMVar_value(mvar) = val; unlockClosure(mvar, stg_MVAR_DIRTY_info); - jump %ENTRY_CODE(Sp(0)); + RET_N(1); } if (StgHeader_info(q) == stg_IND_info || StgHeader_info(q) == stg_MSG_NULL_info) { @@ -1490,7 +1490,7 @@ loop2: foreign "C" tryWakeupThread_(MyCapability() "ptr", tso) []; unlockClosure(mvar, stg_MVAR_DIRTY_info); - jump %ENTRY_CODE(Sp(0)); + RET_N(1); }