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

Fix embarrassing bug in lospace initial mark value

This commit is contained in:
Andy Wingo 2025-03-05 11:32:32 +01:00
parent e780d27959
commit 5c4d5a72e4

View file

@ -421,6 +421,7 @@ large_object_space_alloc(struct large_object_space *space, size_t npages) {
// Mark the hole as live.
node->value.is_live = 1;
memset(&node->value.live, 0, sizeof(node->value.live));
node->value.live.mark = LARGE_OBJECT_NURSERY;
// If the hole is actually too big, trim its tail.
if (node->key.size > size) {
@ -462,7 +463,7 @@ large_object_space_obtain_and_alloc(struct large_object_space *space,
struct large_object k = { addr, bytes };
struct large_object_data v = {0,};
v.is_live = 1;
v.live.mark = 0;
v.live.mark = LARGE_OBJECT_NURSERY;
pthread_mutex_lock(&space->lock);
pthread_mutex_lock(&space->object_tree_lock);
@ -489,6 +490,8 @@ large_object_space_init(struct large_object_space *space,
space->page_size = getpagesize();
space->page_size_log2 = __builtin_ctz(space->page_size);
space->marked = LARGE_OBJECT_MARK_0;
large_object_tree_init(&space->object_tree);
address_map_init(&space->object_map);
address_map_init(&space->nursery);