/* -----------------------------------------------------------------------------
- * $Id: StgProf.h,v 1.10 2000/05/12 13:01:04 simonmar Exp $
+ * $Id: StgProf.h,v 1.15 2001/11/26 16:54:22 simonmar Exp $
*
* (c) The GHC Team, 1998
*
#ifndef STGPROF_H
#define STGPROF_H
-#if !defined(PROFILING)
-
-#define CCS_ALLOC(ccs, amount) doNothing()
-#define ENTER_CC_PAP_CL(r) doNothing()
-#define ENTER_CCS_PAP_CL(r) doNothing()
-
-#else /* PROFILING... */
-
-/* -----------------------------------------------------------------------------
- * Constants
- * ---------------------------------------------------------------------------*/
-
-#define EMPTY_STACK NULL
-#define EMPTY_TABLE NULL
-
-/* Constants used to set sumbsumed flag on CostCentres */
-
-#define CC_IS_CAF 'c' /* 'c' => *is* a CAF cc */
-#define CC_IS_BORING 'B' /* 'B' => *not* a CAF/sub cc */
-
/* -----------------------------------------------------------------------------
* Data Structures
* ---------------------------------------------------------------------------*/
-/*
- * CostCentre
- */
-
typedef struct _CostCentre {
int ccID;
/* used for accumulating costs at the end of the run... */
unsigned long time_ticks;
- unsigned long mem_alloc;
+ unsigned long long mem_alloc;
char is_caf;
} CostCentre;
-
-/*
- * CostCentreStack
- */
-
typedef struct _CostCentreStack {
int ccsID;
CostCentre *cc;
struct _CostCentreStack *prevStack;
struct _IndexTable *indexTable;
-
- unsigned long scc_count;
-
+
+ unsigned long long scc_count;
+
unsigned long time_ticks;
- unsigned long mem_alloc;
- unsigned long mem_resid;
+ unsigned long long mem_alloc;
unsigned long inherited_ticks;
- unsigned long inherited_alloc;
+ unsigned long long inherited_alloc;
CostCentre *root;
} CostCentreStack;
+/* -----------------------------------------------------------------------------
+ * The rest is PROFILING only...
+ * ---------------------------------------------------------------------------*/
-/*
- * IndexTable
- */
+#if defined(PROFILING)
+
+/* -----------------------------------------------------------------------------
+ * Constants
+ * ---------------------------------------------------------------------------*/
+
+#define EMPTY_STACK NULL
+#define EMPTY_TABLE NULL
+
+/* Constants used to set sumbsumed flag on CostCentres */
+
+#define CC_IS_CAF 'c' /* 'c' => *is* a CAF cc */
+#define CC_IS_BORING 'B' /* 'B' => *not* a CAF/sub cc */
+
+
+/* -----------------------------------------------------------------------------
+ * Data Structures
+ * ---------------------------------------------------------------------------*/
typedef struct _IndexTable {
CostCentre *cc;
scc_count : 0, \
time_ticks : 0, \
mem_alloc : 0, \
- mem_resid : 0, \
inherited_ticks : 0, \
inherited_alloc : 0, \
root : 0, \
#define ENTER_CCS_PAP_CL(closure) \
ENTER_CCS_PAP((closure)->header.prof.ccs)
- /* temp EW */
-#define STATIC_CCS_REF(ccs) (ccs)
+/* -----------------------------------------------------------------------------
+ When not profiling, these macros do nothing...
+ -------------------------------------------------------------------------- */
+#else /* !PROFILING */
+#define CCS_ALLOC(ccs, amount) doNothing()
+#define ENTER_CC_PAP_CL(r) doNothing()
+#define ENTER_CCS_PAP_CL(r) doNothing()
+
#endif /* PROFILING */
#endif /* STGPROF_H */