X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FHeapStackCheck.hc;h=2254b5cd33798a368871aea4c6f84af79b5c765f;hb=94a271cc5047d33b86a50699ac3c73bceee38e8e;hp=2ab20237563435dc6dc0184276d2158b947386ca;hpb=016cf2ca08327cb3fbf1400634d31a0e7548d24d;p=ghc-hetmet.git diff --git a/ghc/rts/HeapStackCheck.hc b/ghc/rts/HeapStackCheck.hc index 2ab2023..2254b5c 100644 --- a/ghc/rts/HeapStackCheck.hc +++ b/ghc/rts/HeapStackCheck.hc @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $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 * @@ -112,7 +112,7 @@ 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) { @@ -496,7 +496,7 @@ EXTFUN(stg_gc_noregs) 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) @@ -511,7 +511,7 @@ 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) @@ -537,7 +537,7 @@ EXTFUN(stg_gc_unpt_r1) 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. */ @@ -565,7 +565,7 @@ EXTFUN(stg_gc_unbx_r1) 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) @@ -601,7 +601,7 @@ EXTFUN(stg_gc_f1) 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) @@ -638,7 +638,7 @@ EXTFUN(stg_gc_d1) 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) @@ -664,7 +664,7 @@ EXTFUN(stg_gc_l1) 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) @@ -758,7 +758,7 @@ EXTFUN(__stg_gc_fun) 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) @@ -810,6 +810,7 @@ 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); \ @@ -824,12 +825,13 @@ EXTFUN(stg_gc_fun_ret) 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); \ @@ -850,7 +852,7 @@ EXTFUN(stg_gc_fun_ret) 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. @@ -978,7 +980,7 @@ FN_(stg_block_1) 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) @@ -1002,7 +1004,7 @@ FN_(stg_block_takemvar) 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) @@ -1029,7 +1031,7 @@ FN_(stg_block_putmvar) #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)