From 2de3d92844058511debef2815a0402f892a5536a Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Thu, 30 May 2019 14:50:43 -0700 Subject: allow objects in imemo envs to move --- gc.c | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'gc.c') diff --git a/gc.c b/gc.c index 1b218458f9..bb07d3f216 100644 --- a/gc.c +++ b/gc.c @@ -4439,20 +4439,24 @@ rb_gc_mark_locations(const VALUE *start, const VALUE *end) } static void -gc_mark_and_pin_values(rb_objspace_t *objspace, long n, const VALUE *values) +gc_mark_values(rb_objspace_t *objspace, long n, const VALUE *values) { long i; for (i=0; iep)); - gc_mark_and_pin_values(objspace, (long)env->env_size, env->env); + gc_mark_values(objspace, (long)env->env_size, env->env); VM_ENV_FLAGS_SET(env->ep, VM_ENV_FLAG_WB_REQUIRED); gc_mark_and_pin(objspace, (VALUE)rb_vm_env_prev_env(env)); gc_mark(objspace, (VALUE)env->iseq); @@ -7793,6 +7797,16 @@ gc_ref_update_method_entry(rb_objspace_t *objspace, rb_method_entry_t *me) } } +static void +gc_update_values(rb_objspace_t *objspace, long n, VALUE *values) +{ + long i; + + for (i=0; iiseq); + gc_update_values(objspace, (long)env->env_size, (VALUE *)env->env); } break; break; -- cgit v1.2.3