From 652bc9ca60a1c931bc4a92da31e5270aadf3384b Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Mon, 7 Jul 2025 16:38:09 +0200 Subject: [PATCH] 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