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

commit 652bc9ca60a1c931bc4a92da31e5270aadf3384b
Author: Andy Wingo <wi...@igalia.com>
AuthorDate: Mon Jul 7 16:38:09 2025 +0200

    Marking a conservative ref is atomic
---
 src/nofl-space.h | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/nofl-space.h b/src/nofl-space.h
index 14e3b1a16..b10371bee 100644
--- a/src/nofl-space.h
+++ b/src/nofl-space.h
@@ -1927,10 +1927,11 @@ nofl_space_mark_conservative_ref(struct nofl_space 
*space,
   GC_ASSERT(nofl_metadata_byte_is_young_or_has_mark(resolved.byte,
                                                     space->survivor_mark));
 
-  nofl_space_set_nonempty_mark(space, resolved.metadata, resolved.byte,
-                               gc_ref(resolved.addr));
+  if (nofl_space_set_nonempty_mark(space, resolved.metadata, resolved.byte,
+                                   gc_ref(resolved.addr)))
+    return gc_ref(resolved.addr);
 
-  return gc_ref(resolved.addr);
+  return gc_ref_null();
 }
 
 static inline size_t

Reply via email to