X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=rts%2Fsm%2FStorage.h;h=30bdf54a1d9cc21edf7d63ca5b00d16b904aaa74;hp=c6aa45e16274cf861b983644cd016a2fea200146;hb=5270423a6afe69f1dc57e5e5a474812182718d40;hpb=a2a67cd520b9841114d69a87a423dabcb3b4368e diff --git a/rts/sm/Storage.h b/rts/sm/Storage.h index c6aa45e..30bdf54 100644 --- a/rts/sm/Storage.h +++ b/rts/sm/Storage.h @@ -9,6 +9,10 @@ #ifndef SM_STORAGE_H #define SM_STORAGE_H +#include "Capability.h" + +BEGIN_RTS_PRIVATE + /* ----------------------------------------------------------------------------- Initialisation / De-initialisation -------------------------------------------------------------------------- */ @@ -21,15 +25,11 @@ void freeStorage(void); Storage manager state -------------------------------------------------------------------------- */ -extern bdescr * pinned_object_block; - -extern nat alloc_blocks; -extern nat alloc_blocks_lim; - 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 */ @@ -112,16 +112,7 @@ recordMutableLock(StgClosure *p) } /* ----------------------------------------------------------------------------- - 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 - is. When written to, a MUT_VAR_CLEAN turns into a MUT_VAR_DIRTY - and is put on the mutable list. - -------------------------------------------------------------------------- */ - -void dirty_MUT_VAR(StgRegTable *reg, StgClosure *p); - -/* ----------------------------------------------------------------------------- - Similarly, the write barrier for MVARs + The write barrier for MVARs -------------------------------------------------------------------------- */ void dirty_MVAR(StgRegTable *reg, StgClosure *p); @@ -130,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 ); @@ -166,4 +159,6 @@ void move_TSO (StgTSO *src, StgTSO *dest); extern StgClosure * caf_list; extern StgClosure * revertible_caf_list; +END_RTS_PRIVATE + #endif /* SM_STORAGE_H */