X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FStgStdThunks.hc;h=c3d77ac59a3b1a6cc1e07d0d83a6ec4c25c346c6;hb=979947f545d70c63edb7ca96f6e47008ac90e3bf;hp=d25fcd5b694f4ebd16fa852242ba74ea4e09137e;hpb=11bca975a6781f42b0d29585500d76838a36ae47;p=ghc-hetmet.git diff --git a/ghc/rts/StgStdThunks.hc b/ghc/rts/StgStdThunks.hc index d25fcd5..c3d77ac 100644 --- a/ghc/rts/StgStdThunks.hc +++ b/ghc/rts/StgStdThunks.hc @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: StgStdThunks.hc,v 1.13 2000/11/14 12:51:51 simonmar Exp $ + * $Id: StgStdThunks.hc,v 1.18 2001/11/22 14:25:12 simonmar Exp $ * * (c) The GHC Team, 1998-2000 * @@ -7,9 +7,9 @@ * * ---------------------------------------------------------------------------*/ +#include "Stg.h" #include "Rts.h" #include "StoragePriv.h" -#include "HeapStackCheck.h" /* ----------------------------------------------------------------------------- The code for a thunk that simply extracts a field from a @@ -32,7 +32,7 @@ #define SAVE_CCCS(fs) CCS_HDR(Sp-fs)=CCCS #define GET_SAVED_CCCS RESTORE_CCCS(CCS_HDR(Sp)) #define ENTER_CCS(p) ENTER_CCS_TCL(p) -#define RET_BITMAP 1 +#define RET_BITMAP 3 #else #define SAVE_CCCS(fs) /* empty */ #define GET_SAVED_CCCS /* empty */ @@ -58,6 +58,7 @@ FB_ \ STK_CHK_NP(UPD_FRAME_SIZE,1,); \ UPD_BH_UPDATABLE(&stg_sel_##offset##_upd_info); \ + LDV_ENTER(R1.cl); \ PUSH_UPD_FRAME(R1.p,0); \ ENTER_CCS(R1.p); \ SAVE_CCCS(UPD_FRAME_SIZE); \ @@ -103,6 +104,7 @@ SELECTOR_CODE_UPD(15); FB_ \ STK_CHK_NP(NOUPD_FRAME_SIZE,1,) \ UPD_BH_SINGLE_ENTRY(&stg_sel_##offset##_noupd_info); \ + LDV_ENTER(R1.cl); \ ENTER_CCS(R1.p); \ SAVE_CCCS(NOUPD_FRAME_SIZE); \ Sp[-NOUPD_FRAME_SIZE]=(W_)&stg_sel_ret_##offset##_noupd_info; \ @@ -158,11 +160,12 @@ FN_(stg_ap_8_upd_entry); * in the compiler that means stg_ap_1 is generated occasionally (ToDo) */ -INFO_TABLE_SRT(stg_ap_1_upd_info,stg_ap_1_upd_entry,1,0,0,0,0,THUNK,,EF_,"stg_ap_1_upd_info","stg_ap_1_upd_info"); +INFO_TABLE_SRT(stg_ap_1_upd_info,stg_ap_1_upd_entry,1,1,0,0,0,THUNK_1_0,,EF_,"stg_ap_1_upd_info","stg_ap_1_upd_info"); FN_(stg_ap_1_upd_entry) { FB_ STK_CHK_NP(sizeofW(StgUpdateFrame),1,); UPD_BH_UPDATABLE(&stg_ap_1_upd_info); + LDV_ENTER(R1.cl); ENTER_CCS(R1.p); PUSH_UPD_FRAME(R1.p,0); R1.p=(P_)(R1.cl->payload[0]); @@ -171,11 +174,12 @@ FN_(stg_ap_1_upd_entry) { FE_ } -INFO_TABLE_SRT(stg_ap_2_upd_info,stg_ap_2_upd_entry,2,0,0,0,0,THUNK,,EF_,"stg_ap_2_upd_info","stg_ap_2_upd_info"); +INFO_TABLE_SRT(stg_ap_2_upd_info,stg_ap_2_upd_entry,2,0,0,0,0,THUNK_2_0,,EF_,"stg_ap_2_upd_info","stg_ap_2_upd_info"); FN_(stg_ap_2_upd_entry) { FB_ STK_CHK_NP(sizeofW(StgUpdateFrame)+1,1,); UPD_BH_UPDATABLE(&stg_ap_2_upd_info); + LDV_ENTER(R1.cl); ENTER_CCS(R1.p); PUSH_UPD_FRAME(R1.p,0); Sp[-UF_SIZE-1]=(W_)(R1.cl->payload[1]); @@ -190,6 +194,7 @@ FN_(stg_ap_3_upd_entry) { FB_ STK_CHK_NP(sizeofW(StgUpdateFrame)+2,1,); UPD_BH_UPDATABLE(&stg_ap_3_upd_info); + LDV_ENTER(R1.cl); ENTER_CCS(R1.p); PUSH_UPD_FRAME(R1.p,0); Sp[-UF_SIZE-1]=(W_)(R1.cl->payload[2]); @@ -205,6 +210,7 @@ FN_(stg_ap_4_upd_entry) { FB_ STK_CHK_NP(sizeofW(StgUpdateFrame)+3,1,); UPD_BH_UPDATABLE(&stg_ap_4_upd_info); + LDV_ENTER(R1.cl); ENTER_CCS(R1.p); PUSH_UPD_FRAME(R1.p,0); Sp[-UF_SIZE-1]=(W_)(R1.cl->payload[3]); @@ -221,6 +227,7 @@ FN_(stg_ap_5_upd_entry) { FB_ STK_CHK_NP(sizeofW(StgUpdateFrame)+4,1,); UPD_BH_UPDATABLE(&stg_ap_5_upd_info); + LDV_ENTER(R1.cl); ENTER_CCS(R1.p); PUSH_UPD_FRAME(R1.p,0); Sp[-UF_SIZE-1]=(W_)(R1.cl->payload[4]); @@ -238,6 +245,7 @@ FN_(stg_ap_6_upd_entry) { FB_ STK_CHK_NP(sizeofW(StgUpdateFrame)+5,1,); UPD_BH_UPDATABLE(&stg_ap_6_upd_info); + LDV_ENTER(R1.cl); ENTER_CCS(R1.p); PUSH_UPD_FRAME(R1.p,0); Sp[-UF_SIZE-1]=(W_)(R1.cl->payload[5]); @@ -256,6 +264,7 @@ FN_(stg_ap_7_upd_entry) { FB_ STK_CHK_NP(sizeofW(StgUpdateFrame)+6,1,); UPD_BH_UPDATABLE(&stg_ap_7_upd_info); + LDV_ENTER(R1.cl); ENTER_CCS(R1.p); PUSH_UPD_FRAME(R1.p,0); Sp[-UF_SIZE-1]=(W_)(R1.cl->payload[6]); @@ -275,6 +284,7 @@ FN_(stg_ap_8_upd_entry) { FB_ STK_CHK_NP(sizeofW(StgUpdateFrame)+7,1,); UPD_BH_UPDATABLE(&stg_ap_8_upd_info); + LDV_ENTER(R1.cl); ENTER_CCS(R1.p); PUSH_UPD_FRAME(R1.p,0); Sp[-UF_SIZE-1]=(W_)(R1.cl->payload[7]);