/* ----------------------------------------------------------------------------
- * $Id: Closures.h,v 1.27 2001/08/29 17:24:25 qrczak Exp $
+ * $Id: Closures.h,v 1.31 2002/01/29 16:52:46 simonmar Exp $
*
* (c) The GHC Team, 1998-1999
*
The profiling header
-------------------------------------------------------------------------- */
-#ifdef PROFILING
-
typedef struct {
- CostCentreStack *ccs;
+ CostCentreStack *ccs;
+ union {
+ struct _RetainerSet *rs; // Retainer Set
+ StgWord ldvw; // Lag/Drag/Void Word
+ } hp;
} 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
-
- Comment from old Ticky.h:
-
- This is used to record if a closure has been updated but not yet
- entered. It is set when the closure is updated and cleared when
- subsequently entered.
-
- NB: It is {\em not} an ``entry count'', it is an
- ``entries-after-update count.''
-
- The commoning up of @CONST@, @CHARLIKE@ and @INTLIKE@ closures is
- turned off(?) if this is required. This has only been done for 2s
- collection. It is done using a nasty hack which defines the
- @_Evacuate@ and @_Scavenge@ code for @CONST@, @CHARLIKE@ and @INTLIKE@
- 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
#ifdef PROFILING
StgProfHeader prof;
#endif
-#ifdef PAR
- StgParHeader par;
-#endif
#ifdef GRAN
StgGranHeader gran;
#endif
-#ifdef TICKY_TICKY
- StgTickyHeader ticky;
-#endif
} StgHeader;
#define FIXED_HS (sizeof(StgHeader))