LdvProfile.h 1.04 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
/* -----------------------------------------------------------------------------
 *
 * (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 LdvCensusForDead ( nat );
extern void LdvCensusKillAll ( void );

20 21 22 23 24 25
// 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).
26
#define LDV_FILL_SLOP(from, howMany)	\
27 28
  if (era > 0) {				\
    int i;					\
29 30
    for (i = 0;i < (howMany); i++)	\
      ((StgWord *)(from))[i] = 0;		\
31 32 33 34 35 36 37 38
  }

// 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)

39 40 41
#endif /* PROFILING */

#endif /* LDVPROFILE_H */