[project @ 1999-11-09 15:46:49 by simonmar]
[ghc-hetmet.git] / ghc / rts / StgStdThunks.hc
index bd2b652..10a9e4b 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: StgStdThunks.hc,v 1.7 1999/06/29 12:00:42 simonmar Exp $
+ * $Id: StgStdThunks.hc,v 1.10 1999/11/09 15:46:58 simonmar Exp $
  *
  * (c) The GHC Team, 1998-1999
  *
@@ -7,7 +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
@@ -55,7 +57,7 @@
   EF_(__sel_##offset##_upd_entry) {                                    \
     FB_                                                                        \
       STK_CHK_NP(UPD_FRAME_SIZE,1,);                                   \
-      UPD_BH_UPDATABLE(R1.p);                                          \
+      UPD_BH_UPDATABLE(&__sel_##offset##_upd_info);                    \
       PUSH_UPD_FRAME(R1.p,0);                                          \
       ENTER_CCS(R1.p);                                                 \
       SAVE_CCCS(UPD_FRAME_SIZE);                                       \
@@ -99,6 +101,7 @@ SELECTOR_CODE_UPD(15);
   EF_(__sel_##offset##_noupd_entry) {                                  \
     FB_                                                                        \
       STK_CHK_NP(NOUPD_FRAME_SIZE,1,)                                  \
+      UPD_BH_SINGLE_ENTRY(&__sel_##offset##_noupd_info);               \
       ENTER_CCS(R1.p);                                                 \
       SAVE_CCCS(NOUPD_FRAME_SIZE);                                     \
       Sp[-NOUPD_FRAME_SIZE]=(W_)&__sel_ret_##offset##_noupd_info;      \
@@ -158,7 +161,7 @@ INFO_TABLE_SRT(__ap_1_upd_info,__ap_1_upd_entry,1,0,0,0,0,THUNK,,EF_,0,0);
 FN_(__ap_1_upd_entry) {
   FB_
   STK_CHK_NP(sizeofW(StgUpdateFrame),1,);
-  UPD_BH_UPDATABLE(R1.p);
+  UPD_BH_UPDATABLE(&__ap_1_upd_info);
   ENTER_CCS(R1.p);
   PUSH_UPD_FRAME(R1.p,0);
   R1.p=(P_)(R1.cl->payload[0]);
@@ -171,7 +174,7 @@ INFO_TABLE_SRT(__ap_2_upd_info,__ap_2_upd_entry,2,0,0,0,0,THUNK,,EF_,0,0);
 FN_(__ap_2_upd_entry) {
   FB_
   STK_CHK_NP(sizeofW(StgUpdateFrame)+1,1,);
-  UPD_BH_UPDATABLE(R1.p);
+  UPD_BH_UPDATABLE(&__ap_2_upd_info);
   ENTER_CCS(R1.p);
   PUSH_UPD_FRAME(R1.p,0);
   Sp[-UF_SIZE-1]=(W_)(R1.cl->payload[1]);
@@ -185,7 +188,7 @@ INFO_TABLE_SRT(__ap_3_upd_info,__ap_3_upd_entry,3,0,0,0,0,THUNK,,EF_,0,0);
 FN_(__ap_3_upd_entry) {
   FB_
   STK_CHK_NP(sizeofW(StgUpdateFrame)+2,1,);
-  UPD_BH_UPDATABLE(R1.p);
+  UPD_BH_UPDATABLE(&__ap_3_upd_info);
   ENTER_CCS(R1.p);
   PUSH_UPD_FRAME(R1.p,0);
   Sp[-UF_SIZE-1]=(W_)(R1.cl->payload[2]);
@@ -200,7 +203,7 @@ INFO_TABLE_SRT(__ap_4_upd_info,__ap_4_upd_entry,4,0,0,0,0,THUNK,,EF_,0,0);
 FN_(__ap_4_upd_entry) {
   FB_
   STK_CHK_NP(sizeofW(StgUpdateFrame)+3,1,);
-  UPD_BH_UPDATABLE(R1.p);
+  UPD_BH_UPDATABLE(&__ap_4_upd_info);
   ENTER_CCS(R1.p);
   PUSH_UPD_FRAME(R1.p,0);
   Sp[-UF_SIZE-1]=(W_)(R1.cl->payload[3]);
@@ -216,7 +219,7 @@ INFO_TABLE_SRT(__ap_5_upd_info,__ap_5_upd_entry,5,0,0,0,0,THUNK,,EF_,0,0);
 FN_(__ap_5_upd_entry) {
   FB_
   STK_CHK_NP(sizeofW(StgUpdateFrame)+4,1,);
-  UPD_BH_UPDATABLE(R1.p);
+  UPD_BH_UPDATABLE(&__ap_5_upd_info);
   ENTER_CCS(R1.p);
   PUSH_UPD_FRAME(R1.p,0);
   Sp[-UF_SIZE-1]=(W_)(R1.cl->payload[4]);
@@ -233,7 +236,7 @@ INFO_TABLE_SRT(__ap_6_upd_info,__ap_6_upd_entry,6,0,0,0,0,THUNK,,EF_,0,0);
 FN_(__ap_6_upd_entry) {
   FB_
   STK_CHK_NP(sizeofW(StgUpdateFrame)+5,1,);
-  UPD_BH_UPDATABLE(R1.p);
+  UPD_BH_UPDATABLE(&__ap_6_upd_info);
   ENTER_CCS(R1.p);
   PUSH_UPD_FRAME(R1.p,0);
   Sp[-UF_SIZE-1]=(W_)(R1.cl->payload[5]);
@@ -251,7 +254,7 @@ INFO_TABLE_SRT(__ap_7_upd_info,__ap_7_upd_entry,7,0,0,0,0,THUNK,,EF_,0,0);
 FN_(__ap_7_upd_entry) {
   FB_
   STK_CHK_NP(sizeofW(StgUpdateFrame)+6,1,);
-  UPD_BH_UPDATABLE(R1.p);
+  UPD_BH_UPDATABLE(&__ap_7_upd_info);
   ENTER_CCS(R1.p);
   PUSH_UPD_FRAME(R1.p,0);
   Sp[-UF_SIZE-1]=(W_)(R1.cl->payload[6]);
@@ -270,7 +273,7 @@ INFO_TABLE_SRT(__ap_8_upd_info,__ap_8_upd_entry,8,0,0,0,0,THUNK,,EF_,0,0);
 FN_(__ap_8_upd_entry) {
   FB_
   STK_CHK_NP(sizeofW(StgUpdateFrame)+7,1,);
-  UPD_BH_UPDATABLE(R1.p);
+  UPD_BH_UPDATABLE(&__ap_8_upd_info);
   ENTER_CCS(R1.p);
   PUSH_UPD_FRAME(R1.p,0);
   Sp[-UF_SIZE-1]=(W_)(R1.cl->payload[7]);