{
MSBlockInfo *block = MS_BLOCK_FOR_OBJ (obj);
int word, bit;
+
+ if (!block->swept)
+ sweep_block (block);
DEBUG (9, g_assert ((pinned && block->pinned) || (!pinned && !block->pinned)));
DEBUG (9, g_assert (MS_OBJ_ALLOCED (obj, block)));
MS_CALC_MARK_BIT (word, bit, obj);
}
}
-// FIXME: Consistency check, heap traversal
/*
* sweep_block:
*
}
if (nused) {
have_live = TRUE;
- if (!has_pinned)
- slots_used [obj_size_index] += nused;
}
if (nused < count)
have_free = TRUE;
if (have_live) {
if (!has_pinned) {
++num_blocks [obj_size_index];
+ slots_used [obj_size_index] += nused;
slots_available [obj_size_index] += count;
}