/* -----------------------------------------------------------------------------
- * $Id: PrimOps.hc,v 1.25 1999/03/22 13:01:38 simonm Exp $
+ * $Id: PrimOps.hc,v 1.28 1999/07/14 13:42:28 simonmar Exp $
*
* (c) The GHC Team, 1998-1999
*
# define RET_NP(a,b) PUSH_N(3,a); PUSH_P(1,b); PUSHED(3)
# define RET_PPP(a,b,c) PUSH_P(3,a); PUSH_P(2,b); PUSH_P(1,c); PUSHED(3)
-# define RET_NNP(a,b,c) PUSH_N(6,a); PUSH_N(4,b); PUSH_N(2,c); PUSHED(6)
+# define RET_NNP(a,b,c) PUSH_N(5,a); PUSH_N(3,b); PUSH_P(1,c); PUSHED(5)
# define RET_NNNP(a,b,c,d) PUSH_N(7,a); PUSH_N(5,b); PUSH_N(3,c); PUSH_P(1,d); PUSHED(7)
# define RET_NPNP(a,b,c,d) PUSH_N(6,a); PUSH_P(4,b); PUSH_N(3,c); PUSH_P(1,d); PUSHED(6)
FB_
/* args: R1 = closure to spark */
- if (closure_SHOULD_SPARK(R1.cl)) {
+ MAYBE_GC(R1_PTR, forkzh_fast);
- MAYBE_GC(R1_PTR, forkzh_fast);
-
- /* create it right now, return ThreadID in R1 */
- R1.t = RET_STGCALL2(StgTSO *, createIOThread,
- RtsFlags.GcFlags.initialStkSize, R1.cl);
+ /* create it right now, return ThreadID in R1 */
+ R1.t = RET_STGCALL2(StgTSO *, createIOThread,
+ RtsFlags.GcFlags.initialStkSize, R1.cl);
- /* switch at the earliest opportunity */
- context_switch = 1;
- }
+ /* switch at the earliest opportunity */
+ context_switch = 1;
JMP_(ENTRY_CODE(Sp[0]));
FE_
mvar = (StgMVar *)R1.p;
if (GET_INFO(mvar) == &FULL_MVAR_info) {
- fflush(stdout);
fprintf(stderr, "putMVar#: MVar already full.\n");
stg_exit(EXIT_FAILURE);
}