wingo pushed a commit to branch wip-whippet
in repository guile.

commit 5c4d5a72e48db6ddb8a7d09fcb75e7d5fd41c1e2
Author: Andy Wingo <wi...@igalia.com>
AuthorDate: Wed Mar 5 11:32:32 2025 +0100

    Fix embarrassing bug in lospace initial mark value
---
 src/large-object-space.h | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/large-object-space.h b/src/large-object-space.h
index a7c762056..b33616290 100644
--- a/src/large-object-space.h
+++ b/src/large-object-space.h
@@ -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);

Reply via email to