From 608311e931b84dc49f6b57bbda85b83c4878baf4 Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Fri, 29 Oct 2010 09:04:23 +0000 Subject: [PATCH] fix bugs in tryTakeMVar/tryPutMVar I'm surprised that these haven't caused any problems (or maybe they have?) --- rts/PrimOps.cmm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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); } -- 1.7.10.4