[project @ 2001-04-30 11:23:28 by simonpj]
[ghc-hetmet.git] / ghc / includes / Closures.h
index ae3eadd..855b728 100644 (file)
@@ -1,5 +1,5 @@
 /* ----------------------------------------------------------------------------
- * $Id: Closures.h,v 1.18 2000/08/15 11:48:06 simonmar Exp $
+ * $Id: Closures.h,v 1.26 2001/02/11 17:51:08 simonmar Exp $
  *
  * (c) The GHC Team, 1998-1999
  *
@@ -137,10 +137,10 @@ typedef struct {
 
 /* All closures follow the generic format */
 
-typedef struct StgClosure_ {
+struct StgClosure_ {
     StgHeader   header;
     struct StgClosure_ *payload[0];
-} StgClosure;
+};
 
 /* What a stroke of luck - all our mutable closures follow the same
  * basic layout, with the mutable link field as the second field after
@@ -176,15 +176,6 @@ typedef struct {
 
 typedef struct {
     StgHeader   header;
-    StgWord     n_ptrs;
-    StgWord     n_words;
-    StgWord     n_instrs;
-    StgWord     stgexpr;
-    StgClosure *payload[0];
-} StgBCO;
-
-typedef struct {
-    StgHeader   header;
     StgClosure *indirectee;
 } StgInd;
 
@@ -195,18 +186,11 @@ typedef struct {
 } StgIndOldGen;
 
 typedef struct {
-    StgHeader   header;
-    StgClosure *indirectee;
-    StgClosure *static_link;
-} StgIndStatic;
-
-typedef struct StgCAF_ {
     StgHeader     header;
-    StgClosure    *body;
-    StgMutClosure *mut_link;
-    StgClosure    *value;
-    struct StgCAF_ *link;
-} StgCAF;
+    StgClosure   *indirectee;
+    StgClosure   *static_link;
+    struct _StgInfoTable *saved_info;
+} StgIndStatic;
 
 typedef struct {
     StgHeader  header;
@@ -227,6 +211,14 @@ typedef struct {
     StgMutClosure *mut_link;
 } StgMutVar;
 
+typedef struct {
+    StgHeader      header;
+    StgArrWords   *instrs;     /* a pointer to an ArrWords */
+    StgArrWords   *literals;   /* a pointer to an ArrWords */
+    StgMutArrPtrs *ptrs;       /* a pointer to a MutArrPtrs */
+    StgArrWords   *itbls;      /* a pointer to an ArrWords */
+} StgBCO;
+
 /* 
    A collective typedef for all linkable stack frames i.e.
      StgUpdateFrame, StgSeqFrame, StgCatchFrame