1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-27 21:40:34 +02:00

Fix bug with lospace in generational configurations

This commit is contained in:
Andy Wingo 2025-01-23 19:24:57 +01:00
parent 7049871484
commit 68e3a692f5

View file

@ -298,6 +298,8 @@ large_object_space_remove_from_freelist(struct large_object_space *space,
if (dead->next) if (dead->next)
dead->next->value.dead.prev = dead->prev; dead->next->value.dead.prev = dead->prev;
*dead->prev = dead->next; *dead->prev = dead->next;
dead->prev = NULL;
dead->next = NULL;
} }
static void static void
@ -305,7 +307,7 @@ large_object_space_sweep_one(uintptr_t addr, uintptr_t node_bits,
void *data) { void *data) {
struct large_object_space *space = data; struct large_object_space *space = data;
struct large_object_node *node = (struct large_object_node*) node_bits; struct large_object_node *node = (struct large_object_node*) node_bits;
if (!GC_GENERATIONAL && !node->value.is_live) if (!node->value.is_live)
return; return;
GC_ASSERT(node->value.is_live); GC_ASSERT(node->value.is_live);
uint8_t mark = atomic_load_explicit(large_object_node_mark_loc(node), uint8_t mark = atomic_load_explicit(large_object_node_mark_loc(node),