[project @ 2000-05-09 10:43:45 by rrt]
[ghc-hetmet.git] / ghc / includes / StgMacros.h
index 1e28474..b58ff2b 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: StgMacros.h,v 1.21 2000/03/08 17:48:26 simonmar Exp $
+ * $Id: StgMacros.h,v 1.25 2000/05/08 15:05:36 simonmar Exp $
  *
  * (c) The GHC Team, 1998-1999
  *
 #define ED_            extern
 #define EDD_           extern DLLIMPORT 
 #define ED_RO_         extern const
-#define ID_            extern
-#define ID_RO_         extern const
+#define ID_            static
+#define ID_RO_         static const
 #define EI_             extern INFO_TBL_CONST StgInfoTable
 #define EDI_            extern DLLIMPORT INFO_TBL_CONST StgInfoTable
-#define II_             extern INFO_TBL_CONST StgInfoTable
+#define II_             static INFO_TBL_CONST StgInfoTable
 #define EC_            extern StgClosure
 #define EDC_           extern DLLIMPORT StgClosure
-#define IC_            extern StgClosure
+#define IC_            static StgClosure
 #define ECP_(x)                extern const StgClosure *(x)[]
 #define EDCP_(x)       extern DLLIMPORT StgClosure *(x)[]
-#define ICP_(x)                extern const StgClosure *(x)[]
+#define ICP_(x)                static const StgClosure *(x)[]
 
 /* -----------------------------------------------------------------------------
    Stack Tagging.
@@ -365,7 +365,7 @@ EF_(stg_gen_block);
 
 #define THREAD_RETURN(ptrs)                      \
   ASSERT(ptrs==1);                               \
-  CurrentTSO->whatNext = ThreadEnterGHC;         \
+  CurrentTSO->what_next = ThreadEnterGHC;        \
   R1.i = ThreadBlocked;                          \
   JMP_(StgReturn);                               
 #endif
@@ -679,15 +679,18 @@ extern DLL_IMPORT_DATA const StgPolyInfoTable seq_frame_info;
 static __inline__ void
 SaveThreadState(void)
 {
+  StgTSO *tso;
+
   /* Don't need to save REG_Base, it won't have changed. */
 
-  CurrentTSO->sp       = Sp;
-  CurrentTSO->su       = Su;
-  CurrentTSO->splim    = SpLim;
+  tso = CurrentTSO;
+  tso->sp       = Sp;
+  tso->su       = Su;
+  tso->splim    = SpLim;
   CloseNursery(Hp);
 
 #ifdef REG_CurrentTSO
-  SAVE_CurrentTSO = CurrentTSO;
+  SAVE_CurrentTSO = tso;
 #endif
 #ifdef REG_CurrentNursery
   SAVE_CurrentNursery = CurrentNursery;
@@ -700,14 +703,18 @@ SaveThreadState(void)
 static __inline__ void 
 LoadThreadState (void)
 {
-  Sp    = CurrentTSO->sp;
-  Su    = CurrentTSO->su;
-  SpLim = CurrentTSO->splim;
-  OpenNursery(Hp,HpLim);
+  StgTSO *tso;
 
 #ifdef REG_CurrentTSO
   CurrentTSO = SAVE_CurrentTSO;
 #endif
+
+  tso = CurrentTSO;
+  Sp    = tso->sp;
+  Su    = tso->su;
+  SpLim = tso->splim;
+  OpenNursery(Hp,HpLim);
+
 #ifdef REG_CurrentNursery
   CurrentNursery = SAVE_CurrentNursery;
 #endif
@@ -722,13 +729,11 @@ LoadThreadState (void)
    Module initialisation
    -------------------------------------------------------------------------- */
 
-extern F_ *init_stack;
-
 #define PUSH_INIT_STACK(reg_function)          \
-       *(init_stack++) = (F_)reg_function
+       *(Sp++) = (W_)reg_function
 
 #define POP_INIT_STACK()                       \
-       *(--init_stack)
+       *(--Sp)
 
 #define START_MOD_INIT(reg_mod_name)           \
        static int _module_registered = 0;      \