#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
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;