Add ASSERTs to all calls of nameModule
[ghc-hetmet.git] / rts / sm / GCUtils.h
index 70dd7a8..32810b6 100644 (file)
@@ -1,6 +1,6 @@
 /* ----------------------------------------------------------------------------
  *
- * (c) The GHC Team 1998-2006
+ * (c) The GHC Team 1998-2008
  *
  * Generational garbage collector: utilities
  *
  *
  * --------------------------------------------------------------------------*/
 
-bdescr *gc_alloc_block(step *stp);
-bdescr *gc_alloc_scavd_block(step *stp);
+#include "SMP.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);
+
+// 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.
+INLINE_HEADER rtsBool
+isPartiallyFull(bdescr *bd)
+{
+    return (bd->free + WORK_UNIT_WORDS < bd->start + BLOCK_SIZE_W);
+}
+
+
+#if DEBUG
+void printMutableList (generation *gen);
+#endif