/* -----------------------------------------------------------------------------
- * $Id: HeapStackCheck.hc,v 1.22 2002/02/26 19:18:00 sof Exp $
+ * $Id: HeapStackCheck.hc,v 1.26 2002/03/02 17:43:44 sof Exp $
*
* (c) The GHC Team, 1998-1999
*
cases are covered below.
-------------------------------------------------------------------------- */
-/*-- No regsiters live (probably a void return) ----------------------------- */
+/*-- No registers live (probably a void return) ----------------------------- */
/* If we change the policy for thread startup to *not* remove the
* return address from the stack, we can get rid of this little
FE_
}
+/*-- Unboxed tuple return (unregisterised build only)------------------ */
+
+INFO_TABLE_SRT_BITMAP(stg_ut_1_0_unreg_info, stg_ut_1_0_unreg_ret, 0/*BITMAP*/,
+ 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_LEN*/,
+ RET_SMALL,, EF_, 0, 0);
+
+EXTFUN(stg_ut_1_0_unreg_ret)
+{
+ FB_
+ /* R1 is on the stack (*Sp) */
+ JMP_(ENTRY_CODE(Sp[1]));
+ FE_
+}
+
/*-- R1 is unboxed -------------------------------------------------- */
INFO_TABLE_SRT_BITMAP(stg_gc_unbx_r1_info, stg_gc_unbx_r1_ret, 1/*BITMAP*/,
*
* ret. addr
* ptr to MVar (R1)
- * stg_block_takemvar_ret
+ * stg_block_takemvar_info
*
* Stack layout for a thread blocked in putMVar:
*
* ret. addr
* ptr to Value (R2)
* ptr to MVar (R1)
- * stg_block_putmvar_ret
+ * stg_block_putmvar_info
*
* See PrimOps.hc for a description of the workings of take/putMVar.
*
FB_
Sp -= 2;
Sp[1] = R1.w;
- Sp[0] = (W_)&stg_block_takemvar_ret;
+ Sp[0] = (W_)&stg_block_takemvar_info;
BLOCK_GENERIC;
FE_
}
Sp -= 3;
Sp[2] = R2.w;
Sp[1] = R1.w;
- Sp[0] = (W_)&stg_block_putmvar_ret;
+ Sp[0] = (W_)&stg_block_putmvar_info;
BLOCK_GENERIC;
FE_
}