1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-07-08 14:52:26 +02:00

Merge remote-tracking branch 'whippet/main' into wip-whippet

This commit is contained in:
Andy Wingo 2025-07-03 15:50:04 +02:00
commit 2c57ed393a

View file

@ -1412,9 +1412,20 @@ nofl_space_verify_sweepable_blocks(struct nofl_space *space,
nofl_assert_not_forwarded(obj);
}
meta += granules;
addr += granules * NOFL_GRANULE_SIZE;
} else if (byte & NOFL_METADATA_BYTE_MARK_MASK) {
size_t granules = 1;
while (addr + granules * NOFL_GRANULE_SIZE < limit
&& !(meta[granules - 1] & NOFL_METADATA_BYTE_END)) {
granules++;
GC_ASSERT_EQ(meta[granules - 1] & NOFL_METADATA_BYTE_MARK_MASK, 0);
}
GC_ASSERT(meta[granules - 1] & NOFL_METADATA_BYTE_END);
meta += granules;
addr += granules * NOFL_GRANULE_SIZE;
} else {
GC_ASSERT_EQ(byte & NOFL_METADATA_BYTE_END, 0);
meta++;
addr += NOFL_GRANULE_SIZE;
}
@ -1500,6 +1511,7 @@ nofl_space_verify_before_restart(struct nofl_space *space) {
nofl_space_verify_swept_blocks(space, &space->full);
nofl_space_verify_swept_blocks(space, &space->old);
nofl_space_verify_empty_blocks(space, &space->empty.list, 1);
nofl_space_verify_empty_blocks(space, &space->evacuation_targets, 1);
for (int age = 0; age < NOFL_PAGE_OUT_QUEUE_SIZE; age++)
nofl_space_verify_empty_blocks(space, &space->paged_out[age].list, 0);
// GC_ASSERT(space->last_collection_was_minor || !nofl_block_count(&space->old));
@ -1753,6 +1765,9 @@ nofl_space_evacuate_or_mark_object(struct nofl_space *space,
if (nofl_metadata_byte_has_mark(byte, space->current_mark))
return 0;
// It should at least have a young mark.
GC_ASSERT(byte & NOFL_METADATA_BYTE_MARK_MASK);
if (nofl_space_should_evacuate(space, byte, old_ref))
return nofl_space_evacuate(space, metadata, byte, edge, old_ref,
evacuate);