1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-08 13:10:19 +02:00

Fix bug in which empty block would not have mark bits cleared

This commit is contained in:
Andy Wingo 2024-08-21 10:16:00 +02:00
parent ea15d142fc
commit b6e9d3c0bb

View file

@ -2153,6 +2153,8 @@ static size_t next_hole(struct gc_mutator *mut) {
if (granules < GRANULES_PER_BLOCK) if (granules < GRANULES_PER_BLOCK)
return granules; return granules;
struct block_summary *summary = block_summary_for_addr(mut->block); struct block_summary *summary = block_summary_for_addr(mut->block);
// Sweep mark bytes for completely empty block.
memset(metadata_byte_for_addr(mut->block), 0, GRANULES_PER_BLOCK);
block_summary_clear_flag(summary, BLOCK_NEEDS_SWEEP); block_summary_clear_flag(summary, BLOCK_NEEDS_SWEEP);
// Sweeping found a completely empty block. If we are below the // Sweeping found a completely empty block. If we are below the
// minimum evacuation reserve, take the block. // minimum evacuation reserve, take the block.