/* -----------------------------------------------------------------------------
- * $Id: HeapStackCheck.hc,v 1.29 2003/03/19 18:56:14 sof Exp $
+ * $Id: HeapStackCheck.hc,v 1.31 2003/05/14 09:13:59 simonmar Exp $
*
* (c) The GHC Team, 1998-2002
*
INFO_TABLE_RET( stg_enter_info, stg_enter_ret,
MK_SMALL_BITMAP(1/*framesize*/, 0/*bitmap*/),
- 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_LEN*/,
+ 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_BITMAP*/,
RET_SMALL,, EF_, 0, 0);
EXTFUN(stg_enter_ret)
{
INFO_TABLE_RET( stg_gc_void_info, stg_gc_void_ret,
MK_SMALL_BITMAP(0/*framesize*/, 0/*bitmap*/),
- 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_LEN*/,
+ 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_BITMAP*/,
RET_SMALL,, EF_, 0, 0);
EXTFUN(stg_gc_void_ret)
INFO_TABLE_RET( stg_gc_unpt_r1_info, stg_gc_unpt_r1_ret,
MK_SMALL_BITMAP(1/*framesize*/, 0/*bitmap*/),
- 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_LEN*/,
+ 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_BITMAP*/,
RET_SMALL,, EF_, 0, 0);
EXTFUN(stg_gc_unpt_r1_ret)
INFO_TABLE_RET( stg_gc_unbx_r1_info, stg_gc_unbx_r1_ret,
MK_SMALL_BITMAP(1/*framesize*/, 1/*bitmap*/),
- 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_LEN*/,
+ 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_BITMAP*/,
RET_SMALL,, EF_, 0, 0);
/* the 1 is a bitmap - i.e. 1 non-pointer word on the stack. */
INFO_TABLE_RET( stg_gc_f1_info, stg_gc_f1_ret,
MK_SMALL_BITMAP(1/*framesize*/, 1/*bitmap*/),
- 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_LEN*/,
+ 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_BITMAP*/,
RET_SMALL,, EF_, 0, 0);
EXTFUN(stg_gc_f1_ret)
INFO_TABLE_RET( stg_gc_d1_info, stg_gc_d1_ret,
MK_SMALL_BITMAP(DBL_WORDS/*framesize*/, DBL_BITMAP/*bitmap*/),
- 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_LEN*/,
+ 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_BITMAP*/,
RET_SMALL,, EF_, 0, 0);
EXTFUN(stg_gc_d1_ret)
INFO_TABLE_RET( stg_gc_l1_info, stg_gc_l1_ret,
MK_SMALL_BITMAP(LLI_WORDS/*framesize*/, LLI_BITMAP/*bitmap*/),
- 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_LEN*/,
+ 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_BITMAP*/,
RET_SMALL,, EF_, 0, 0);
EXTFUN(stg_gc_l1_ret)
INFO_TABLE_RET( stg_ut_1_0_unreg_info, stg_ut_1_0_unreg_ret,
MK_SMALL_BITMAP(1/*size*/, 0/*BITMAP*/),
- 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_LEN*/,
+ 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_BITMAP*/,
RET_SMALL,, EF_, 0, 0);
EXTFUN(stg_ut_1_0_unreg_ret)
INFO_TABLE_RET( stg_gc_fun_info,stg_gc_fun_ret,
MK_SMALL_BITMAP(0/*framesize*/, 0/*bitmap*/),
- 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_LEN*/,
+ 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_BITMAP*/,
RET_FUN,, EF_, 0, 0);
EXTFUN(stg_gc_fun_ret)
// it's not a big deal.
#define RESTORE_EVERYTHING \
+ L1 = PK_Word64(Sp+19); \
D2 = PK_DBL(Sp+17); \
D1 = PK_DBL(Sp+15); \
F4 = PK_FLT(Sp+14); \
R3.w = Sp[5]; \
R2.w = Sp[4]; \
R1.w = Sp[3]; \
- Sp += 19;
+ Sp += 21;
-#define RET_OFFSET (-17)
+#define RET_OFFSET (-19)
#define SAVE_EVERYTHING \
- Sp -= 19; \
+ Sp -= 21; \
+ ASSIGN_Word64(Sp+19,L1); \
ASSIGN_DBL(Sp+17,D2); \
ASSIGN_DBL(Sp+15,D1); \
ASSIGN_FLT(Sp+14,F4); \
INFO_TABLE_RET( stg_gc_gen_info, stg_gc_gen_ret,
0/*bitmap*/,
- 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_LEN*/,
+ 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_BITMAP*/,
RET_DYN,, EF_, 0, 0);
/* bitmap in the above info table is unused, the real one is on the stack.
INFO_TABLE_RET( stg_block_takemvar_info, stg_block_takemvar_ret,
MK_SMALL_BITMAP(1/*framesize*/, 0/*bitmap*/),
- 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_LEN*/,
+ 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_BITMAP*/,
RET_SMALL,, IF_, 0, 0);
IF_(stg_block_takemvar_ret)
INFO_TABLE_RET( stg_block_putmvar_info, stg_block_putmvar_ret,
MK_SMALL_BITMAP(2/*framesize*/, 0/*bitmap*/),
- 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_LEN*/,
+ 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_BITMAP*/,
RET_SMALL,, IF_, 0, 0);
IF_(stg_block_putmvar_ret)
#ifdef mingw32_TARGET_OS
INFO_TABLE_RET( stg_block_async_info, stg_block_async_ret,
MK_SMALL_BITMAP(0/*framesize*/, 0/*bitmap*/),
- 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_LEN*/,
+ 0/*SRT*/, 0/*SRT_OFF*/, 0/*SRT_BITMAP*/,
RET_SMALL,, IF_, 0, 0);
IF_(stg_block_async_ret)