diff options
Diffstat (limited to 'rts/LdvProfile.h')
-rw-r--r-- | rts/LdvProfile.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/rts/LdvProfile.h b/rts/LdvProfile.h new file mode 100644 index 0000000000..d85b95cd6a --- /dev/null +++ b/rts/LdvProfile.h @@ -0,0 +1,42 @@ +/* ----------------------------------------------------------------------------- + * + * (c) The GHC Team, 2001 + * Author: Sungwoo Park + * + * Lag/Drag/Void profiling. + * + * ---------------------------------------------------------------------------*/ + +#ifndef LDVPROFILE_H +#define LDVPROFILE_H + +#ifdef PROFILING + +#include "ProfHeap.h" + +extern void LDV_recordDead_FILL_SLOP_DYNAMIC( StgClosure *p ); +extern void LdvCensusForDead ( nat ); +extern void LdvCensusKillAll ( void ); + +// Creates a 0-filled slop of size 'howManyBackwards' backwards from the +// address 'from'. +// +// Invoked when: +// 1) Hp is incremented and exceeds HpLim (in Updates.hc). +// 2) copypart() is called (in GC.c). +#define LDV_FILL_SLOP(from, howManyBackwards) \ + if (era > 0) { \ + int i; \ + for (i = 0;i < (howManyBackwards); i++) \ + ((StgWord *)(from))[-i] = 0; \ + } + +// Informs the LDV profiler that closure c has just been evacuated. +// Evacuated objects are no longer needed, so we just store its original size in +// the LDV field. +#define SET_EVACUAEE_FOR_LDV(c, size) \ + LDVW((c)) = (size) + +#endif /* PROFILING */ + +#endif /* LDVPROFILE_H */ |