summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
authorAaron Patterson <tenderlove@ruby-lang.org>2019-07-31 10:34:23 -0700
committerAaron Patterson <tenderlove@ruby-lang.org>2019-07-31 10:34:23 -0700
commit5ad2dfd8dce00f9fb4908adc786f12baaaf2b273 (patch)
treecb1011647376b1d6ef8e6ef2715ad4c277f9e421 /gc.c
parent8d138e9702e814353574cf6092b0929879e110af (diff)
Revert "Let prev EP move"
This reverts commit e352445863588b90f7af6cdf6c1b6dc432ee33ab. This is breaking CI and I'm not sure why yet, so I'll revert for now.
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/gc.c b/gc.c
index bfa5c18943..1b0f13efbb 100644
--- a/gc.c
+++ b/gc.c
@@ -5006,7 +5006,7 @@ gc_mark_imemo(rb_objspace_t *objspace, VALUE obj)
GC_ASSERT(VM_ENV_ESCAPED_P(env->ep));
gc_mark_values(objspace, (long)env->env_size, env->env);
VM_ENV_FLAGS_SET(env->ep, VM_ENV_FLAG_WB_REQUIRED);
- gc_mark(objspace, (VALUE)rb_vm_env_prev_env(env));
+ gc_mark_and_pin(objspace, (VALUE)rb_vm_env_prev_env(env));
gc_mark(objspace, (VALUE)env->iseq);
}
return;
@@ -7845,12 +7845,10 @@ gc_ref_update_imemo(rb_objspace_t *objspace, VALUE obj)
{
rb_env_t *env = (rb_env_t *)obj;
TYPED_UPDATE_IF_MOVED(objspace, rb_iseq_t *, env->iseq);
- if (gc_object_moved_p(objspace, VM_ENV_ENVVAL(env->ep))) {
- VM_STACK_ENV_WRITE(env->ep, VM_ENV_DATA_INDEX_ENV, rb_gc_location(VM_ENV_ENVVAL(env->ep)));
- }
gc_update_values(objspace, (long)env->env_size, (VALUE *)env->env);
}
break;
+ break;
case imemo_cref:
UPDATE_IF_MOVED(objspace, RANY(obj)->as.imemo.cref.klass);
TYPED_UPDATE_IF_MOVED(objspace, struct rb_cref_struct *, RANY(obj)->as.imemo.cref.next);