X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2Fsm%2FGCUtils.h;h=7fafe51ba2ca064b0a4e43d091cf1da424689a57;hb=d64900abb0ddc2f2ab52948cc274f2adc864a6dc;hp=6948b2f1dbafdedf5cd183c5978bdaf19c0911a9;hpb=6a405b1efd138a4af4ed93ce4ff173a4c5704512;p=ghc-hetmet.git diff --git a/rts/sm/GCUtils.h b/rts/sm/GCUtils.h index 6948b2f..7fafe51 100644 --- a/rts/sm/GCUtils.h +++ b/rts/sm/GCUtils.h @@ -11,16 +11,23 @@ * * --------------------------------------------------------------------------*/ -#include "SMP.h" +#ifndef SM_GCUTILS_H +#define SM_GCUTILS_H + +BEGIN_RTS_PRIVATE bdescr *allocBlock_sync(void); void freeChain_sync(bdescr *bd); void push_scanned_block (bdescr *bd, step_workspace *ws); -bdescr *grab_todo_block (step_workspace *ws); StgPtr todo_block_full (nat size, step_workspace *ws); StgPtr alloc_todo_block (step_workspace *ws, nat size); +bdescr *grab_local_todo_block (step_workspace *ws); +#if defined(THREADED_RTS) +bdescr *steal_todo_block (nat s); +#endif + // Returns true if a block is partially full. This predicate is used to try // to re-use partial blocks wherever possible, and to reduce wastage. // We might need to tweak the actual value. @@ -53,3 +60,7 @@ recordMutableGen_GC (StgClosure *p, nat gen_no) } *bd->free++ = (StgWord)p; } + +END_RTS_PRIVATE + +#endif /* SM_GCUTILS_H */