Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 48 lines (36 sloc) 1.221 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
/* -----------------------------------------------------------------------------
*
* (c) The GHC Team, 2001
* Author: Sungwoo Park
*
* Retainer profiling interface.
*
* ---------------------------------------------------------------------------*/

#ifndef RETAINERPROFILE_H
#define RETAINERPROFILE_H

#ifdef PROFILING

#include "RetainerSet.h"

extern void initRetainerProfiling ( void );
extern void endRetainerProfiling ( void );
extern void printRetainer ( FILE *, retainer );
extern void retainerProfile ( void );
extern void resetStaticObjectForRetainerProfiling ( void );

extern StgWord RTS_VAR(flip);

// extract the retainer set field from c
#define RSET(c) ((c)->header.prof.hp.rs)

#define isRetainerSetFieldValid(c) \
((((StgWord)(c)->header.prof.hp.rs & 1) ^ flip) == 0)

static inline RetainerSet *
retainerSetOf( StgClosure *c )
{
    ASSERT( isRetainerSetFieldValid(c) );
    // StgWord has the same size as pointers, so the following type
    // casting is okay.
    return (RetainerSet *)((StgWord)RSET(c) ^ flip);
}

// Used by Storage.c:memInventory()
#ifdef DEBUG
extern lnat retainerStackBlocks ( void );
#endif

#endif /* PROFILING */

#endif /* RETAINERPROFILE_H */
Something went wrong with that request. Please try again.