X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FClosures.h;h=5f0b5709542fab2586fd4dacd9db4fd0c286ee75;hb=8b356754aa206277c2b9f928b038bdb97a6e8aa3;hp=2c38541d6b45053cd2f9e1a93b5759499fa8ddda;hpb=772e0d3f0cf19d52b199e61afc8bbf2ee4c5281f;p=ghc-hetmet.git diff --git a/ghc/includes/Closures.h b/ghc/includes/Closures.h index 2c38541..5f0b570 100644 --- a/ghc/includes/Closures.h +++ b/ghc/includes/Closures.h @@ -1,5 +1,5 @@ /* ---------------------------------------------------------------------------- - * $Id: Closures.h,v 1.24 2000/12/19 16:48:58 sewardj Exp $ + * $Id: Closures.h,v 1.28 2001/10/03 13:57:42 simonmar Exp $ * * (c) The GHC Team, 1998-1999 * @@ -19,56 +19,26 @@ The profiling header -------------------------------------------------------------------------- */ -#ifdef PROFILING - typedef struct { CostCentreStack *ccs; } StgProfHeader; -#else /* !PROFILING */ - -typedef struct { - /* empty */ -} StgProfHeader; - -#endif /* PROFILING */ - /* ----------------------------------------------------------------------------- The parallel header -------------------------------------------------------------------------- */ -#ifdef PAR - typedef struct { /* StgWord ga; */ /* nope! global addresses are managed via a hash table */ } StgParHeader; -#else /* !PAR */ - -typedef struct { - /* empty */ -} StgParHeader; - -#endif /* PAR */ - /* ----------------------------------------------------------------------------- The GranSim header -------------------------------------------------------------------------- */ -#if defined(GRAN) - typedef struct { StgWord procs; /* bitmask indicating on which PEs this closure resides */ } StgGranHeader; -#else /* !GRAN */ - -typedef struct { - /* empty */ -} StgGranHeader; - -#endif /* GRAN */ - /* ----------------------------------------------------------------------------- The ticky-ticky header @@ -88,20 +58,10 @@ typedef struct { info tables to be @_Evacuate_1@ and @_Scavenge_1_0@. -------------------------------------------------------------------------- */ -#ifdef TICKY_TICKY - typedef struct { /* old: W_ updated; */ } StgTickyHeader; -#else /* !TICKY_TICKY */ - -typedef struct { - /* empty */ -} StgTickyHeader; - -#endif /* TICKY_TICKY */ - /* ----------------------------------------------------------------------------- The full fixed-size closure header @@ -139,7 +99,7 @@ typedef struct { struct StgClosure_ { StgHeader header; - struct StgClosure_ *payload[0]; + struct StgClosure_ *payload[FLEXIBLE_ARRAY]; }; /* What a stroke of luck - all our mutable closures follow the same @@ -152,7 +112,7 @@ typedef struct StgMutClosure_ { StgHeader header; StgWord padding; struct StgMutClosure_ *mut_link; - struct StgClosure_ *payload[0]; + struct StgClosure_ *payload[FLEXIBLE_ARRAY]; } StgMutClosure; typedef struct { @@ -164,14 +124,14 @@ typedef struct { StgHeader header; StgWord n_args; StgClosure *fun; - StgClosure *payload[0]; + StgClosure *payload[FLEXIBLE_ARRAY]; } StgPAP; typedef struct { StgHeader header; StgWord n_args; StgClosure *fun; - StgClosure *payload[0]; + StgClosure *payload[FLEXIBLE_ARRAY]; } StgAP_UPD; typedef struct { @@ -186,30 +146,23 @@ 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; StgWord words; - StgWord payload[0]; + StgWord payload[FLEXIBLE_ARRAY]; } StgArrWords; typedef struct { StgHeader header; StgWord ptrs; StgMutClosure *mut_link; /* mutable list */ - StgClosure *payload[0]; + StgClosure *payload[FLEXIBLE_ARRAY]; } StgMutArrPtrs; typedef struct { @@ -304,7 +257,7 @@ typedef struct { const struct _StgInfoTable* info; StgWord liveness; StgWord ret_addr; - StgWord payload[0]; + StgWord payload[FLEXIBLE_ARRAY]; } StgRetDyn; /* Concurrent communication objects */ @@ -333,7 +286,7 @@ typedef struct StgBlockingQueueElement_ { StgHeader header; struct StgBlockingQueueElement_ *link; /* next elem in BQ */ StgMutClosure *mut_link; /* next elem in mutable list */ - struct StgClosure_ *payload[0];/* contents of the closure */ + struct StgClosure_ *payload[FLEXIBLE_ARRAY];/* contents of the closure */ } StgBlockingQueueElement; /* only difference to std code is type of the elem in the BQ */ @@ -346,7 +299,7 @@ typedef struct StgBlockingQueue_ { /* this closure is hanging at the end of a blocking queue in (see RBH.c) */ typedef struct StgRBHSave_ { StgHeader header; - StgClosure *payload[0]; /* 2 words ripped out of the guts of the */ + StgClosure *payload[FLEXIBLE_ARRAY]; /* 2 words ripped out of the guts of the */ } StgRBHSave; /* closure holding the blocking queue */ typedef struct StgRBH_ {