+INLINE_HEADER 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;
+}
+
+INLINE_HEADER int