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 int max_blocks; // max blocks
bdescr *mut_list; // mut objects in this gen (not G0)
-
+
StgTSO * threads; // threads in this gen
// linked via global_link
struct generation_ *to; // destination gen for live objects
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