[project @ 2001-10-01 11:09:02 by simonmar]
[ghc-hetmet.git] / ghc / rts / BlockAlloc.c
index 652b629..65205f8 100644 (file)
@@ -1,7 +1,7 @@
 /* -----------------------------------------------------------------------------
- * $Id: BlockAlloc.c,v 1.6 1999/07/01 13:48:22 panne Exp $
+ * $Id: BlockAlloc.c,v 1.10 2001/08/14 13:40:09 sewardj Exp $
  *
- * (c) The GHC Team 1998-1999
+ * (c) The GHC Team 1998-2000
  * 
  * The block allocator and free list manager.
  *
@@ -16,6 +16,7 @@
  *
  * ---------------------------------------------------------------------------*/
 
+#include "PosixSource.h"
 #include "Rts.h"
 #include "RtsFlags.h"
 #include "RtsUtils.h"
@@ -63,6 +64,8 @@ allocGroup(nat n)
   void *mblock;
   bdescr *bd, **last;
 
+  ASSERT(n != 0);
+
   if (n > BLOCKS_PER_MBLOCK) {
     return allocMegaGroup(BLOCKS_TO_MBLOCKS(n));
   }
@@ -73,6 +76,9 @@ allocGroup(nat n)
       *last = bd->link;
       /* no initialisation necessary - this is already a
        * self-contained block group. */
+#ifdef DEBUG
+      bd->free = bd->start;    /* block isn't free now */
+#endif
       return bd;
     }
     if (bd->blocks >  n) {     /* block too big... */
@@ -219,7 +225,7 @@ freeGroup(bdescr *p)
 #ifdef DEBUG
   p->free = (void *)-1;  /* indicates that this block is free */
   p->step = NULL;
-  p->gen  = NULL;
+  p->gen_no = 0;
   /* fill the block group with garbage if sanity checking is on */
   IF_DEBUG(sanity,memset(p->start, 0xaa, p->blocks * BLOCK_SIZE));
 #endif