Make allocatePinned use local storage, and other refactorings
[ghc-hetmet.git] / rts / sm / Storage.h
index 573d6bc..30bdf54 100644 (file)
@@ -9,7 +9,9 @@
 #ifndef SM_STORAGE_H
 #define SM_STORAGE_H
 
-#pragma GCC visibility push(hidden)
+#include "Capability.h"
+
+BEGIN_RTS_PRIVATE
 
 /* -----------------------------------------------------------------------------
    Initialisation / De-initialisation
@@ -23,12 +25,11 @@ void freeStorage(void);
    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 ||
+          cap->r.rNursery->n_large_blocks >= alloc_blocks_lim);
 }
 
 /* for splitting blocks groups in two */
@@ -120,6 +121,8 @@ void dirty_MVAR(StgRegTable *reg, StgClosure *p);
    Nursery manipulation
    -------------------------------------------------------------------------- */
 
+extern step *nurseries;
+
 void     resetNurseries       ( void );
 void     resizeNurseries      ( nat blocks );
 void     resizeNurseriesFixed ( nat blocks );
@@ -156,6 +159,6 @@ void move_TSO  (StgTSO *src, StgTSO *dest);
 extern StgClosure * caf_list;
 extern StgClosure * revertible_caf_list;
 
-#pragma GCC visibility pop
+END_RTS_PRIVATE
 
 #endif /* SM_STORAGE_H */