*
* --------------------------------------------------------------------------*/
-#include "SMP.h"
+#ifndef SM_GCUTILS_H
+#define SM_GCUTILS_H
+
+#include "BeginPrivate.h"
+
+#include "GCTDecl.h"
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);
+void push_scanned_block (bdescr *bd, gen_workspace *ws);
+StgPtr todo_block_full (nat size, gen_workspace *ws);
+StgPtr alloc_todo_block (gen_workspace *ws, nat size);
+
+bdescr *grab_local_todo_block (gen_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.
#if DEBUG
-void printMutableList (generation *gen);
+void printMutableList (bdescr *bd);
#endif
// Version of recordMutableGen for use during GC. This uses the
}
*bd->free++ = (StgWord)p;
}
+
+#include "EndPrivate.h"
+
+#endif /* SM_GCUTILS_H */