[project @ 2003-08-22 22:24:12 by sof]
[ghc-hetmet.git] / ghc / includes / ClosureMacros.h
index 7b3a6d5..5ddb934 100644 (file)
@@ -1,5 +1,5 @@
 /* ----------------------------------------------------------------------------
- * $Id: ClosureMacros.h,v 1.35 2002/12/11 15:36:37 simonmar Exp $
+ * $Id: ClosureMacros.h,v 1.37 2003/06/30 14:17:02 simonmar Exp $
  *
  * (c) The GHC Team, 1998-1999
  *
@@ -207,6 +207,13 @@ extern StgWord flip;
 /* These macros are optimised versions of the above for certain
  * closure types.  They *must* be equivalent to the generic
  * STATIC_LINK.
+ *
+ * You may be surprised that the STATIC_LINK field for a THUNK_STATIC
+ * is at offset 2; that's because a THUNK_STATIC always has two words
+ * of (non-ptr) padding, to make room for the IND_STATIC that is
+ * going to overwrite it.  It doesn't do any harm, because a
+ * THUNK_STATIC needs this extra word for the IND_STATIC's saved_info
+ * field anyhow.  Hmm, this is all rather delicate. --SDM
  */
 #define FUN_STATIC_LINK(p)   ((p)->payload[0])
 #define THUNK_STATIC_LINK(p) ((p)->payload[2])
@@ -234,6 +241,6 @@ extern StgWord flip;
    -------------------------------------------------------------------------- */
 
 /* constructors don't have SRTs */
-#define GET_TAG(info) (INFO_PTR_TO_STRUCT(info)->srt_len)
+#define GET_TAG(info) (INFO_PTR_TO_STRUCT(info)->srt_bitmap)
 
 #endif /* CLOSUREMACROS_H */