1 /* ----------------------------------------------------------------------------
3 * (c) The GHC Team 1998-2008
5 * Generational garbage collector: utilities
7 * Documentation on the architecture of the Garbage Collector can be
8 * found in the online commentary:
10 * http://hackage.haskell.org/trac/ghc/wiki/Commentary/Rts/Storage/GC
12 * --------------------------------------------------------------------------*/
16 bdescr *allocBlock_sync(void);
17 void freeChain_sync(bdescr *bd);
19 void push_scanned_block (bdescr *bd, step_workspace *ws);
20 bdescr *grab_todo_block (step_workspace *ws);
21 StgPtr todo_block_full (nat size, step_workspace *ws);
22 StgPtr alloc_todo_block (step_workspace *ws, nat size);
24 // Returns true if a block is partially full. This predicate is used to try
25 // to re-use partial blocks wherever possible, and to reduce wastage.
26 // We might need to tweak the actual value.
28 isPartiallyFull(bdescr *bd)
30 return (bd->free + WORK_UNIT_WORDS < bd->start + BLOCK_SIZE_W);
35 void printMutableList (generation *gen);