Count allocations more accurately
[ghc-hetmet.git] / rts / sm / Storage.h
index 573d6bc..fdb6a46 100644 (file)
@@ -9,7 +9,9 @@
 #ifndef SM_STORAGE_H
 #define SM_STORAGE_H
 
-#pragma GCC visibility push(hidden)
+#include "Capability.h"
+
+#include "BeginPrivate.h"
 
 /* -----------------------------------------------------------------------------
    Initialisation / De-initialisation
 
 void initStorage(void);
 void exitStorage(void);
-void freeStorage(void);
+void freeStorage(rtsBool free_heap);
 
 /* -----------------------------------------------------------------------------
    Storage manager state
    -------------------------------------------------------------------------- */
 
-extern bdescr * pinned_object_block;
-
 INLINE_HEADER rtsBool
-doYouWantToGC( void )
+doYouWantToGC( Capability *cap )
 {
-  return (alloc_blocks >= alloc_blocks_lim);
+  return (cap->r.rCurrentNursery->link == NULL ||
+          g0->n_new_large_words >= large_alloc_lim);
 }
 
 /* for splitting blocks groups in two */
@@ -120,7 +121,10 @@ void dirty_MVAR(StgRegTable *reg, StgClosure *p);
    Nursery manipulation
    -------------------------------------------------------------------------- */
 
+extern nursery *nurseries;
+
 void     resetNurseries       ( void );
+lnat     clearNurseries       ( void );
 void     resizeNurseries      ( nat blocks );
 void     resizeNurseriesFixed ( nat blocks );
 lnat     countNurseryBlocks   ( void );
@@ -129,33 +133,25 @@ lnat     countNurseryBlocks   ( void );
    Stats 'n' DEBUG stuff
    -------------------------------------------------------------------------- */
 
-extern ullong total_allocated;
-
-lnat    calcAllocated  (void);
+lnat    calcAllocated  (rtsBool count_nurseries);
 lnat    calcLiveBlocks (void);
 lnat    calcLiveWords  (void);
 lnat    countOccupied  (bdescr *bd);
 lnat    calcNeeded     (void);
-HsInt64 getAllocations (void);
-
-#if defined(DEBUG)
-void    memInventory       (rtsBool show);
-void    checkSanity        (void);
-nat     countBlocks        (bdescr *);
-void    checkNurserySanity (step *stp);
-#endif
 
 /* ----------------------------------------------------------------------------
    Storage manager internal APIs and globals
    ------------------------------------------------------------------------- */
 
+extern bdescr *exec_block;
+
 #define END_OF_STATIC_LIST ((StgClosure*)1)
 
-void move_TSO  (StgTSO *src, StgTSO *dest);
+void move_STACK  (StgStack *src, StgStack *dest);
 
 extern StgClosure * caf_list;
 extern StgClosure * revertible_caf_list;
 
-#pragma GCC visibility pop
+#include "EndPrivate.h"
 
 #endif /* SM_STORAGE_H */