X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=includes%2Frts%2Fstorage%2FGC.h;h=5eadd2dadc2569023a71e25d47adaf447246e751;hb=db0c13a482893243cc829bbc253862e65f437cbe;hp=2a21c66517178566bfd0c1612ca85c607cf0e212;hpb=a0ca27ac659bcbe0c291b3bd1a12a965f43f5f55;p=ghc-hetmet.git diff --git a/includes/rts/storage/GC.h b/includes/rts/storage/GC.h index 2a21c66..5eadd2d 100644 --- a/includes/rts/storage/GC.h +++ b/includes/rts/storage/GC.h @@ -63,11 +63,12 @@ typedef struct generation_ { bdescr * blocks; // blocks in this gen unsigned int n_blocks; // number of blocks - unsigned int n_words; // number of words + unsigned int n_words; // number of used words bdescr * large_objects; // large objects (doubly linked) unsigned int n_large_blocks; // no. of blocks used by large objs - unsigned int n_new_large_blocks; // count freshly allocated large objects + unsigned long n_new_large_words; // words of new large objects + // (for allocation stats) unsigned int max_blocks; // max blocks bdescr *mut_list; // mut objects in this gen (not G0) @@ -154,7 +155,7 @@ void * allocateExec(unsigned int len, void **exec_addr); void freeExec (void *p); // Used by GC checks in external .cmm code: -extern nat alloc_blocks_lim; +extern nat large_alloc_lim; /* ----------------------------------------------------------------------------- Performing Garbage Collection @@ -167,10 +168,20 @@ void performMajorGC(void); The CAF table - used to let us revert CAFs in GHCi -------------------------------------------------------------------------- */ -void newCAF (StgClosure*); -void newDynCAF (StgClosure *); +void newCAF (StgRegTable *reg, StgClosure *); +void newDynCAF (StgRegTable *reg, StgClosure *); void revertCAFs (void); +// Request that all CAFs are retained indefinitely. +void setKeepCAFs (void); + +/* ----------------------------------------------------------------------------- + Stats + -------------------------------------------------------------------------- */ + +// Returns the total number of bytes allocated since the start of the program. +HsInt64 getAllocations (void); + /* ----------------------------------------------------------------------------- This is the write barrier for MUT_VARs, a.k.a. IORefs. A MUT_VAR_CLEAN object is not on the mutable list; a MUT_VAR_DIRTY