/* FIXME: assumes object layout */
*(GCVTable*)obj = vtable;
+ total_allocated_major += block_obj_sizes [size_index];
+
return (GCObject *)obj;
}
{
SGEN_ASSERT (6, block->state == expected_state, "Block state incorrect before set");
block->state = new_state;
+ binary_protocol_block_set_state (block, MS_BLOCK_SIZE, expected_state, new_state);
}
/*
static void
sweep_finish (void)
{
+ mword used_slots_size = 0;
int i;
for (i = 0; i < num_block_obj_sizes; ++i) {
} else {
evacuate_block_obj_sizes [i] = FALSE;
}
+
+ used_slots_size += sweep_slots_used [i] * block_obj_sizes [i];
}
- sgen_memgov_major_post_sweep ();
+ sgen_memgov_major_post_sweep (used_slots_size);
set_sweep_state (SWEEP_STATE_SWEPT, SWEEP_STATE_COMPACTING);
if (concurrent_sweep)