[project @ 2001-07-30 13:06:18 by simonmar]
authorsimonmar <unknown>
Mon, 30 Jul 2001 13:06:18 +0000 (13:06 +0000)
committersimonmar <unknown>
Mon, 30 Jul 2001 13:06:18 +0000 (13:06 +0000)
add definition of unmark()

ghc/rts/GCCompact.h

index 8244e87..4de4bf3 100644 (file)
@@ -1,5 +1,5 @@
 /* -----------------------------------------------------------------------------
- * $Id: GCCompact.h,v 1.1 2001/07/23 17:23:19 simonmar Exp $
+ * $Id: GCCompact.h,v 1.2 2001/07/30 13:06:18 simonmar Exp $
  *
  * (c) The GHC Team 1998-1999
  *
@@ -17,6 +17,16 @@ mark(StgPtr p, bdescr *bd)
     *bitmap_word |= bit_mask;
 }
 
+static inline void 
+unmark(StgPtr p, bdescr *bd)
+{
+    nat offset_within_block = p - bd->start; // in words
+    StgPtr bitmap_word = (StgPtr)bd->u.bitmap + 
+       (offset_within_block / (sizeof(W_)*BITS_PER_BYTE));
+    nat bit_mask = 1 << (offset_within_block & (sizeof(W_)*BITS_PER_BYTE - 1));
+    *bitmap_word &= ~bit_mask;
+}
+
 static inline int
 is_marked(StgPtr p, bdescr *bd)
 {