[project @ 2005-06-06 08:49:07 by tharris]
[ghc-hetmet.git] / ghc / includes / Regs.h
index 10e0b3f..0394257 100644 (file)
@@ -22,6 +22,7 @@
 #ifndef REGS_H
 #define REGS_H
 
+#include "gmp.h" // Needs MP_INT definition 
 
 /* 
  * This is the table that holds shadow-locations for all the STG
@@ -86,12 +87,23 @@ typedef struct StgRegTable_ {
   StgPtr         rHp;
   StgPtr         rHpLim;
   struct StgTSO_ *rCurrentTSO;
-  struct bdescr_ *rNursery;
-  struct bdescr_ *rCurrentNursery;
+  struct step_   *rNursery;
+  struct bdescr_ *rCurrentNursery; /* Hp/HpLim point into this block */
+  struct bdescr_ *rCurrentAlloc;   /* for allocation using allocate() */
   StgWord         rHpAlloc;    /* number of *bytes* being allocated in heap */
+  // rmp_tmp1..rmp_result2 are only used in SMP builds to avoid per-thread temps
+  // in bss, but currently always incldue here so we just run mkDerivedConstants once
+  StgInt          rmp_tmp_w;
+  MP_INT          rmp_tmp1;      
+  MP_INT          rmp_tmp2;      
+  MP_INT          rmp_result1;
+  MP_INT          rmp_result2;
 #if defined(SMP) || defined(PAR)
   StgSparkPool   rSparks;      /* per-task spark pool */
 #endif
+  StgWord        rInHaskell;    /* non-zero if we're in Haskell code */
+    // If this flag is set, we are running Haskell code.  Used to detect
+    // uses of 'foreign import unsafe' that should be 'safe'.
 } StgRegTable;