X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FPrimOps.hc;h=45717e5d1ad7c13b777c9e60e479b328e9323147;hb=a391f59439b104e6446d738935ad4bbdac0f26c8;hp=ea57f0511cfc081c94c25bbfb765410cf579297b;hpb=18340925716fb6e68672c69bd263ad9041f81822;p=ghc-hetmet.git diff --git a/ghc/rts/PrimOps.hc b/ghc/rts/PrimOps.hc index ea57f05..45717e5 100644 --- a/ghc/rts/PrimOps.hc +++ b/ghc/rts/PrimOps.hc @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: PrimOps.hc,v 1.108 2003/07/03 15:14:58 sof Exp $ + * $Id: PrimOps.hc,v 1.110 2003/07/23 13:39:11 simonmar Exp $ * * (c) The GHC Team, 1998-2002 * @@ -188,7 +188,7 @@ StgWord GHC_ZCCReturnable_static_info[1]; #define PUSHED(m) Sp -= (m); JMP_(ENTRY_CODE(Sp[m])); # define RET_P(a) PUSH(1,a); PUSHED(1) -# define RET_N(a) PUSH(1,a); PUSHED(2) +# define RET_N(a) PUSH(1,a); PUSHED(1) # define RET_PP(a,b) PUSH(2,a); PUSH(1,b); PUSHED(2) # define RET_NN(a,b) PUSH(2,a); PUSH(1,b); PUSHED(2) @@ -1640,6 +1640,10 @@ FN_(delayzh_fast) ares->len = 0; ares->errCode = 0; CurrentTSO->block_info.async_result = ares; + /* Having all async-blocked threads reside on the blocked_queue simplifies matters, so + * change the status to OnDoProc & put the delayed thread on the blocked_queue. + */ + CurrentTSO->why_blocked = BlockedOnDoProc; APPEND_TO_BLOCKED_QUEUE(CurrentTSO); #else target = (R1.i / (TICK_MILLISECS*1000)) + getourtimeofday();