[project @ 2003-07-31 10:07:02 by simonmar]
[ghc-hetmet.git] / ghc / includes / StgMacros.h
index 8c319d7..8ac041a 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: StgMacros.h,v 1.52 2003/04/28 09:57:12 simonmar Exp $
+ * $Id: StgMacros.h,v 1.55 2003/07/31 10:07:02 simonmar Exp $
  *
  * (c) The GHC Team, 1998-1999
  *
@@ -259,6 +259,13 @@ typedef StgWord StgWordArray[];
 #define RET_DYN_NONPTR_REGS_SIZE 10
 #define ALL_NON_PTRS 0xff
 
+// Sanity check that RESERVED_STACK_WORDS is reasonable.  We can't
+// just derive RESERVED_STACK_WORDS because it's used in Haskell code
+// too.
+#if RESERVED_STACK_WORDS != (3 + RET_DYN_BITMAP_SIZE + RET_DYN_NONPTR_REGS_SIZE)
+#error RESERVED_STACK_WORDS may be wrong!
+#endif
+
 #define LIVENESS_MASK(ptr_regs)  (ALL_NON_PTRS ^ (ptr_regs))
 
 // We can have up to 255 pointers and 255 nonpointers in the stack
@@ -438,6 +445,9 @@ EXTFUN_RTS(stg_gen_block);
 #   else
 // An object is replaced by a blackhole, so we fill the slop with zeros.
 // 
+// This looks like it can't work - we're overwriting the contents of
+// the THUNK with slop!  Perhaps this never worked??? --SDM
+//
 // Todo: maybe use SET_HDR() and remove LDV_recordCreate()?
 // 
 #    define UPD_BH_UPDATABLE(info)             \
@@ -457,8 +467,6 @@ EXTFUN_RTS(stg_gen_block);
 #  define UPD_BH_SINGLE_ENTRY(thunk) /* nothing */
 #endif /* EAGER_BLACKHOLING */
 
-#define UPD_FRAME_UPDATEE(p)  ((P_)(((StgUpdateFrame *)(p))->updatee))
-
 /* -----------------------------------------------------------------------------
    Moving Floats and Doubles