[project @ 1999-02-23 17:20:34 by sof]
[ghc-hetmet.git] / ghc / includes / InfoTables.h
index 78e754d..5dd8a67 100644 (file)
@@ -1,6 +1,8 @@
 /* ----------------------------------------------------------------------------
- * $Id: InfoTables.h,v 1.5 1999/01/18 15:21:42 simonm Exp $
+ * $Id: InfoTables.h,v 1.11 1999/02/15 12:12:55 simonm Exp $
  * 
+ * (c) The GHC Team, 1998-1999
+ *
  * Info Tables
  *
  * -------------------------------------------------------------------------- */
@@ -85,18 +87,32 @@ typedef struct {
 typedef enum {
 
     INVALID_OBJECT /* Object tag 0 raises an internal error */
+
     , CONSTR
-    /* CONSTR_p_np */
+    , CONSTR_1_0
+    , CONSTR_0_1
+    , CONSTR_2_0
+    , CONSTR_1_1
+    , CONSTR_0_2
     , CONSTR_INTLIKE
     , CONSTR_CHARLIKE
     , CONSTR_STATIC
     , CONSTR_NOCAF_STATIC
 
     , FUN
+    , FUN_1_0
+    , FUN_0_1
+    , FUN_2_0
+    , FUN_1_1
+    , FUN_0_2
     , FUN_STATIC
 
     , THUNK
-    /* THUNK_p_np */
+    , THUNK_1_0
+    , THUNK_0_1
+    , THUNK_2_0
+    , THUNK_1_1
+    , THUNK_0_2
     , THUNK_STATIC
     , THUNK_SELECTOR
 
@@ -132,8 +148,6 @@ typedef enum {
     , MVAR
 
     , ARR_WORDS
-    , MUT_ARR_WORDS
-
     , MUT_ARR_PTRS
     , MUT_ARR_PTRS_FROZEN
 
@@ -141,6 +155,7 @@ typedef enum {
 
     , WEAK
     , FOREIGN
+    , STABLE_NAME
 
     , TSO
 
@@ -164,8 +179,12 @@ typedef enum {
 #define _UPT (1<<6)  /* unpointed?         */
 #define _SRT (1<<7)  /* has an SRT?        */
 
-#define isSTATIC(flags)  ((flags)&_STA)
-#define isMUTABLE(flags) ((flags) &_MUT)
+#define isSTATIC(flags)    ((flags) &_STA)
+#define isMUTABLE(flags)   ((flags) &_MUT)
+#define isBITMAP(flags)    ((flags) &_BTM)
+#define isTHUNK(flags)     ((flags) &_THU)
+#define isUNPOINTED(flags) ((flags) &_UPT)
+#define hasSRT(flags)      ((flags) &_SRT)
 
 #define closure_STATIC(closure)       (  get_itbl(closure)->flags & _STA)
 #define closure_SHOULD_SPARK(closure) (!(get_itbl(closure)->flags & _NS))
@@ -175,11 +194,26 @@ typedef enum {
 /*                                 HNF  BTM   NS  STA  THU MUT UPT SRT */
                                                                    
 #define FLAGS_CONSTR              (_HNF|     _NS                        )      
+#define FLAGS_CONSTR_1_0          (_HNF|     _NS                        )      
+#define FLAGS_CONSTR_0_1          (_HNF|     _NS                        )      
+#define FLAGS_CONSTR_2_0          (_HNF|     _NS                        )      
+#define FLAGS_CONSTR_1_1          (_HNF|     _NS                        )      
+#define FLAGS_CONSTR_0_2          (_HNF|     _NS                        )      
 #define FLAGS_CONSTR_STATIC       (_HNF|     _NS|_STA                   )      
 #define FLAGS_CONSTR_NOCAF_STATIC  (_HNF|     _NS|_STA                   )     
 #define FLAGS_FUN                 (_HNF|     _NS|                  _SRT )      
+#define FLAGS_FUN_1_0             (_HNF|     _NS                        )      
+#define FLAGS_FUN_0_1             (_HNF|     _NS                        )      
+#define FLAGS_FUN_2_0             (_HNF|     _NS                        )      
+#define FLAGS_FUN_1_1             (_HNF|     _NS                        )      
+#define FLAGS_FUN_0_2             (_HNF|     _NS                        )      
 #define FLAGS_FUN_STATIC          (_HNF|     _NS|_STA|             _SRT )      
 #define FLAGS_THUNK               (     _BTM|         _THU|        _SRT )      
+#define FLAGS_THUNK_1_0                   (     _BTM|         _THU|        _SRT )      
+#define FLAGS_THUNK_0_1                   (     _BTM|         _THU|        _SRT )      
+#define FLAGS_THUNK_2_0                   (     _BTM|         _THU|        _SRT )      
+#define FLAGS_THUNK_1_1                   (     _BTM|         _THU|        _SRT )      
+#define FLAGS_THUNK_0_2                   (     _BTM|         _THU|        _SRT )      
 #define FLAGS_THUNK_STATIC        (     _BTM|    _STA|_THU|        _SRT )      
 #define FLAGS_THUNK_SELECTOR      (     _BTM|         _THU|        _SRT )      
 #define FLAGS_BCO                 (_HNF|     _NS                        )      
@@ -195,11 +229,11 @@ typedef enum {
 #define FLAGS_IND_STATIC          (              _STA                   )      
 #define FLAGS_EVACUATED                   0
 #define FLAGS_ARR_WORDS                   (_HNF|     _NS|              _UPT     )      
-#define FLAGS_MUT_ARR_WORDS       (_HNF|     _NS|         _MUT|_UPT     )      
 #define FLAGS_MUT_ARR_PTRS        (_HNF|     _NS|         _MUT|_UPT     )      
 #define FLAGS_MUT_ARR_PTRS_FROZEN  (_HNF|     _NS|         _MUT|_UPT     )     
 #define FLAGS_MUT_VAR             (_HNF|     _NS|         _MUT|_UPT     )      
 #define FLAGS_FOREIGN             (_HNF|     _NS|              _UPT     )      
+#define FLAGS_STABLE_NAME         (_HNF|     _NS|              _UPT     )      
 #define FLAGS_WEAK                (_HNF|     _NS|              _UPT     )      
 #define FLAGS_BLACKHOLE                   (          _NS|              _UPT     )      
 #define FLAGS_BLACKHOLE_BQ        (          _NS|         _MUT|_UPT     )      
@@ -269,9 +303,15 @@ typedef StgClosure* StgSRT[];
 
 typedef struct _StgInfoTable {
     StgSRT         *srt;       /* pointer to the SRT table */
+#ifdef PAR
     StgParInfo     par;
+#endif
+#ifdef PROFILING
     StgProfInfo     prof;
+#endif
+#ifdef DEBUG_CLOSURE
     StgDebugInfo    debug;
+#endif
     StgClosureInfo  layout;    /* closure layout info (pointer-sized) */
 #if SIZEOF_VOID_P == 8
     StgNat16        flags;     /* }                                   */