Forked from
Glasgow Haskell Compiler / GHC
41699 commits behind, 113 commits ahead of the upstream repository.
-
Simon Marlow authored
This has no effect with static libraries, but when the RTS is in a shared library it does two things: - it prevents the function from being exposed by the shared library - internal calls to the function can use the faster non-PLT calls, because the function cannot be overriden at link time.
Simon Marlow authoredThis has no effect with static libraries, but when the RTS is in a shared library it does two things: - it prevents the function from being exposed by the shared library - internal calls to the function can use the faster non-PLT calls, because the function cannot be overriden at link time.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
LdvProfile.h 1.05 KiB
/* -----------------------------------------------------------------------------
*
* (c) The GHC Team, 2001
* Author: Sungwoo Park
*
* Lag/Drag/Void profiling.
*
* ---------------------------------------------------------------------------*/
#ifndef LDVPROFILE_H
#define LDVPROFILE_H
#ifdef PROFILING
#include "ProfHeap.h"
RTS_PRIVATE void LdvCensusForDead ( nat );
RTS_PRIVATE 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, howMany) \
if (era > 0) { \
int i; \
for (i = 0;i < (howMany); 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 */