mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-07-08 17:32:27 +02:00
Merge remote-tracking branch 'whippet/main' into wip-whippet
This commit is contained in:
commit
2c57ed393a
1 changed files with 15 additions and 0 deletions
|
@ -1412,9 +1412,20 @@ nofl_space_verify_sweepable_blocks(struct nofl_space *space,
|
||||||
nofl_assert_not_forwarded(obj);
|
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;
|
meta += granules;
|
||||||
addr += granules * NOFL_GRANULE_SIZE;
|
addr += granules * NOFL_GRANULE_SIZE;
|
||||||
} else {
|
} else {
|
||||||
|
GC_ASSERT_EQ(byte & NOFL_METADATA_BYTE_END, 0);
|
||||||
meta++;
|
meta++;
|
||||||
addr += NOFL_GRANULE_SIZE;
|
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->full);
|
||||||
nofl_space_verify_swept_blocks(space, &space->old);
|
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->empty.list, 1);
|
||||||
|
nofl_space_verify_empty_blocks(space, &space->evacuation_targets, 1);
|
||||||
for (int age = 0; age < NOFL_PAGE_OUT_QUEUE_SIZE; age++)
|
for (int age = 0; age < NOFL_PAGE_OUT_QUEUE_SIZE; age++)
|
||||||
nofl_space_verify_empty_blocks(space, &space->paged_out[age].list, 0);
|
nofl_space_verify_empty_blocks(space, &space->paged_out[age].list, 0);
|
||||||
// GC_ASSERT(space->last_collection_was_minor || !nofl_block_count(&space->old));
|
// 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))
|
if (nofl_metadata_byte_has_mark(byte, space->current_mark))
|
||||||
return 0;
|
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))
|
if (nofl_space_should_evacuate(space, byte, old_ref))
|
||||||
return nofl_space_evacuate(space, metadata, byte, edge, old_ref,
|
return nofl_space_evacuate(space, metadata, byte, edge, old_ref,
|
||||||
evacuate);
|
evacuate);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue