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

commit 3d4d4d047c8edd73960d49239ff269792d7ada7d
Author: Andy Wingo <wi...@igalia.com>
AuthorDate: Wed Jul 24 10:01:16 2024 +0200

    Fix BDW finalization; ensure pending set is marked
---
 src/bdw.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/bdw.c b/src/bdw.c
index 8eae3b4ee..a69901f7f 100644
--- a/src/bdw.c
+++ b/src/bdw.c
@@ -219,7 +219,7 @@ void gc_finalizer_attach(struct gc_mutator *mut, struct 
gc_finalizer *finalizer,
   void *prev_data = NULL;
   gc_finalizer_init_internal(finalizer, object, closure);
   gc_finalizer_externally_activated(finalizer);
-  GC_REGISTER_FINALIZER_NO_ORDER(gc_ref_heap_object(object), finalize_object,
+  GC_register_finalizer_no_order(gc_ref_heap_object(object), finalize_object,
                                  finalizer, &prev, &prev_data);
   // FIXME: Allow multiple finalizers per object.
   GC_ASSERT(prev == NULL);
@@ -315,6 +315,8 @@ mark_heap(GC_word *addr, struct GC_ms_entry *mark_stack_ptr,
   if (heap->roots)
     gc_trace_heap_roots(heap->roots, bdw_mark_edge, heap, &state);
 
+  gc_visit_finalizer_roots(heap->finalizer_state, bdw_mark_edge, heap, &state);
+
   state.mark_stack_ptr = GC_MARK_AND_PUSH (heap->mutators,
                                            state.mark_stack_ptr,
                                            state.mark_stack_limit,

Reply via email to