Skip to content

Commit 7902ae3

Browse files
committed
Add rb_gc_move_obj_during_marking
1 parent 01cd9c9 commit 7902ae3

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

gc.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3173,6 +3173,14 @@ gc_mark_classext_iclass(rb_classext_t *ext, bool prime, VALUE box_value, void *a
31733173

31743174
#define TYPED_DATA_REFS_OFFSET_LIST(d) (size_t *)(uintptr_t)RTYPEDDATA_TYPE(d)->function.dmark
31753175

3176+
void
3177+
rb_gc_move_obj_during_marking(VALUE from, VALUE to)
3178+
{
3179+
if (rb_obj_gen_fields_p(to)) {
3180+
rb_mark_generic_ivar(from);
3181+
}
3182+
}
3183+
31763184
void
31773185
rb_gc_mark_children(void *objspace, VALUE obj)
31783186
{

gc/gc.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ MODULAR_GC_FN void *rb_gc_get_ractor_newobj_cache(void);
107107
MODULAR_GC_FN void rb_gc_initialize_vm_context(struct rb_gc_vm_context *context);
108108
MODULAR_GC_FN void rb_gc_worker_thread_set_vm_context(struct rb_gc_vm_context *context);
109109
MODULAR_GC_FN void rb_gc_worker_thread_unset_vm_context(struct rb_gc_vm_context *context);
110+
MODULAR_GC_FN void rb_gc_move_obj_during_marking(VALUE from, VALUE to);
110111
#endif
111112

112113
#if USE_MODULAR_GC

0 commit comments

Comments
 (0)