X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2Fsm%2FStorage.h;h=02f56375153a73aca2053ab122d04763eee3d439;hb=95d4b4c552cef8a33bbfb37361e90c079d65134b;hp=5ddcbdcdc2c78d45d3993945cdbbb6dd4c244874;hpb=9a9803e8dc80ba41bd3e2d31228e64fa6b61060e;p=ghc-hetmet.git diff --git a/rts/sm/Storage.h b/rts/sm/Storage.h index 5ddcbdc..02f5637 100644 --- a/rts/sm/Storage.h +++ b/rts/sm/Storage.h @@ -9,6 +9,8 @@ #ifndef SM_STORAGE_H #define SM_STORAGE_H +#include "Capability.h" + BEGIN_RTS_PRIVATE /* ----------------------------------------------------------------------------- @@ -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 ); @@ -136,19 +139,13 @@ 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);