-# define SET_CCC(cc_ident,do_scc_count) \
- SET_CCC_X(cc_ident,do_scc_count,do_scc_count)
-
-# define SET_CCS_TOP(cc_ident) \
- SET_CCC_X(cc_ident,0,1)
-
-/* -----------------------------------------------------------------------------
- * Allocating new cost centres / cost centre stacks.
- * -------------------------------------------------------------------------- */
-
-#define ASSIGN_CC_ID(ccID) \
- do { \
- ccID = CC_ID; \
- CC_ID++; \
- } while(0)
-
-#define ASSIGN_CCS_ID(ccsID) \
- do { \
- ccsID = CCS_ID; \
- CCS_ID++; \
- } while(0)
-
-#define ASSIGN_HP_ID(hpID) \
- do { \
- hpID = HP_ID; \
- HP_ID++; \
- } while(0)
-
-#define SET_STATS_TO_ZERO(stack) \
- do { \
- (stack)->scc_count = 0; \
- (stack)->time_ticks = 0; \
- (stack)->mem_alloc = 0; \
- } while(0)
-
-/* -----------------------------------------------------------------------------
- * Setting the cost centre when we enter a closure
- * -------------------------------------------------------------------------- */
-
-#if defined(PROFILING_DETAIL_COUNTS)
-#define CCCS_DETAIL_COUNT(inc_this) ((inc_this)++)
-#else
-#define CCCS_DETAIL_COUNT(inc_this) /*nothing*/
-#endif
-
-/* On entry to top level CAFs we count the scc ...*/
-
-#define ENTER_CCS_CAF_X(ccs) \
- do { \
- /* set CCCS to ident ccs */ \
- CCCS = (CostCentreStack *)(ccs); \
- /* inc scc count of CAF ccs */ \
- CCCS->scc_count++; \
- } while(0)
-
-#define ENTER_CCS_CAF(ccs_ident) ENTER_CCS_CAF_X(ccs_ident)
-#define ENTER_CCS_CAF_CL(closure) ENTER_CCS_CAF_X(CCS_HDR(closure))
-
-/* ----------------------------------------------------------------------------
- * Entering a Thunk
- *
- * On entering a closure we only count the enter to thunks ...
- * ------------------------------------------------------------------------- */
-
-#define ENTER_CCS_T(ccs) \
- do { \
- CCCS = (CostCentreStack *)(ccs); \
- CCCS_DETAIL_COUNT(CCCS->thunk_count); \
- } while(0)
-
-#define ENTER_CCS_TCL(closure) ENTER_CCS_T(CCS_HDR(closure))
-
-/* -----------------------------------------------------------------------------
- * Entering a function
- *
- * Here is our special "hybrid" case when we do *not* set the CCCS.
- * (a) The closure is a function, not a thunk;
- * (b) The CCS is CAF-ish.
- * -------------------------------------------------------------------------- */
-
-#define ENTER_CCS_F(stack) \
- do { \
- CostCentreStack *ccs = (CostCentreStack *) (stack); \
- CCCS_DETAIL_COUNT(CCCS->function_count); \
- CCCS = EnterFunCCS(CCCS,ccs); \
- } while(0)
-
-#define ENTER_CCS_FCL(closure) ENTER_CCS_F(CCS_HDR(closure))
-
-/* Entering a top-level function: costs are subsumed by the caller
- */
-#define ENTER_CCS_FSUB() \
- do { \
- CCCS_DETAIL_COUNT(CCCS->subsumed_fun_count); \
- CCCS_DETAIL_COUNT(CCCS->function_count); \
- entering_PAP = 0; \
- } while(0)
-
-#define ENTER_CCS_FCAF(stack) \
- do { \
- CostCentreStack *ccs = (CostCentreStack *) (stack); \
- CCCS_DETAIL_COUNT(ccs->caffun_subsumed); \
- CCCS_DETAIL_COUNT(CCCS->subsumed_caf_count); \
- CCCS_DETAIL_COUNT(CCCS->function_count); \
- entering_PAP = 0; \
- } while(0)
-
-#define ENTER_CCS_FLOAD(ccs) \
- do { \
- CCCS = (CostCentreStack *)(ccs); \
- CCCS_DETAIL_COUNT(CCCS->function_count); \
- } while(0)
-
-/* These ENTER_CC_PAP things are only used in the RTS */