X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FStgProf.h;h=f6af87f655c973393985f87e2d4844144c4afb3d;hb=c2e526179d6f642a75f1e5dc0c59423246734173;hp=f19f4d2de30421bf5ad82e0c9614dfb18c757b23;hpb=5ee90f9b922e51ac6613d860e728266e9bf4c84f;p=ghc-hetmet.git diff --git a/ghc/includes/StgProf.h b/ghc/includes/StgProf.h index f19f4d2..f6af87f 100644 --- a/ghc/includes/StgProf.h +++ b/ghc/includes/StgProf.h @@ -1,5 +1,5 @@ /* ----------------------------------------------------------------------------- - * $Id: StgProf.h,v 1.10 2000/05/12 13:01:04 simonmar Exp $ + * $Id: StgProf.h,v 1.16 2001/12/12 14:59:41 simonmar Exp $ * * (c) The GHC Team, 1998 * @@ -9,33 +9,9 @@ #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; @@ -44,7 +20,7 @@ typedef struct _CostCentre { /* 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; @@ -52,35 +28,49 @@ typedef struct _CostCentre { } CostCentre; - -/* - * CostCentreStack - */ - typedef struct _CostCentreStack { int ccsID; CostCentre *cc; struct _CostCentreStack *prevStack; struct _IndexTable *indexTable; - - unsigned long scc_count; - + + unsigned int selected; + + 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; @@ -192,10 +182,10 @@ extern CostCentreStack *CCS_LIST; /* registered CCS list */ cc : cc_ident, \ prevStack : NULL, \ indexTable : NULL, \ + selected : 0, \ scc_count : 0, \ time_ticks : 0, \ mem_alloc : 0, \ - mem_resid : 0, \ inherited_ticks : 0, \ inherited_alloc : 0, \ root : 0, \ @@ -208,8 +198,6 @@ extern CostCentreStack *CCS_LIST; /* registered CCS list */ * Time / Allocation Macros * ---------------------------------------------------------------------------*/ -#define CCS_TICK(ccs) (ccs)->time_ticks++ - /* eliminate profiling overhead from allocation costs */ #define CCS_ALLOC(ccs, size) (ccs)->mem_alloc += ((size)-sizeofW(StgProfHeader)) @@ -360,9 +348,15 @@ extern CostCentreStack *CCS_LIST; /* registered CCS list */ #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 */