X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FClosures.h;h=541c6addd18e667041ed47a6bc5297f0e7537ca0;hb=d1a47b329fd21ab5a7db1dbe47959a874e8648e6;hp=f77ce9af784e231798553bde0dd338a47b707bb4;hpb=4391e44f910ce579f269986faef9e5db8907a6c0;p=ghc-hetmet.git diff --git a/ghc/includes/Closures.h b/ghc/includes/Closures.h index f77ce9a..541c6ad 100644 --- a/ghc/includes/Closures.h +++ b/ghc/includes/Closures.h @@ -1,5 +1,7 @@ /* ---------------------------------------------------------------------------- - * $Id: Closures.h,v 1.3 1999/01/13 17:25:53 simonm Exp $ + * $Id: Closures.h,v 1.13 1999/05/11 16:47:40 keithw Exp $ + * + * (c) The GHC Team, 1998-1999 * * Closures * @@ -68,19 +70,19 @@ typedef struct { info tables to be @_Evacuate_1@ and @_Scavenge_1_0@. -------------------------------------------------------------------------- */ -#ifdef TICKY +#ifdef TICKY_TICKY typedef struct { - W_ updated; + /* old: W_ updated; */ } StgTickyHeader; -#else /* !TICKY */ +#else /* !TICKY_TICKY */ typedef struct { /* empty */ } StgTickyHeader; -#endif /* TICKY */ +#endif /* TICKY_TICKY */ /* ----------------------------------------------------------------------------- The full fixed-size closure header @@ -91,9 +93,15 @@ typedef struct { typedef struct { const struct _StgInfoTable* info; +#ifdef PROFILING StgProfHeader prof; +#endif +#ifdef GRAN StgGranHeader par; +#endif +#ifdef TICKY_TICKY StgTickyHeader ticky; +#endif } StgHeader; #define FIXED_HS (sizeof(StgHeader)) @@ -150,6 +158,7 @@ typedef struct { StgWord n_ptrs; StgWord n_words; StgWord n_instrs; + StgWord stgexpr; StgPtr payload[0]; } StgBCO; @@ -171,16 +180,18 @@ typedef struct { } StgIndStatic; typedef struct StgCAF_ { - StgHeader header; - StgClosure *body; - StgClosure *value; + StgHeader header; + StgClosure *body; + StgMutClosure *mut_link; + StgClosure *value; struct StgCAF_ *link; } StgCAF; typedef struct { StgHeader header; struct StgTSO_ *blocking_queue; -} StgBlackHole; + StgMutClosure *mut_link; +} StgBlockingQueue; typedef struct { StgHeader header; @@ -242,21 +253,31 @@ typedef struct _StgForeignObj { StgAddr data; /* pointer to data in non-haskell-land */ } StgForeignObj; +typedef struct _StgStableName { + StgHeader header; + StgWord sn; +} StgStableName; + typedef struct _StgWeak { /* Weak v */ StgHeader header; StgClosure *key; StgClosure *value; /* v */ - StgClosure *finaliser; + StgClosure *finalizer; struct _StgWeak *link; } StgWeak; +typedef struct _StgDeadWeak { /* Weak v */ + StgHeader header; + struct _StgWeak *link; +} StgDeadWeak; + /* Dynamic stack frames - these have a liveness mask in the object * itself, rather than in the info table. Useful for generic heap * check code. */ typedef struct { - StgHeader header; + const struct _StgInfoTable* info; StgWord liveness; StgWord ret_addr; StgWord payload[0];