summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--imemo.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/imemo.c b/imemo.c
index 1face1ce4e..23a9a7531f 100644
--- a/imemo.c
+++ b/imemo.c
@@ -357,7 +357,9 @@ rb_imemo_mark_and_move(VALUE obj, bool reference_updating)
((VALUE *)env->ep)[VM_ENV_DATA_INDEX_ENV] = rb_gc_location(env->ep[VM_ENV_DATA_INDEX_ENV]);
}
else {
- VM_ENV_FLAGS_SET(env->ep, VM_ENV_FLAG_WB_REQUIRED);
+ if (!VM_ENV_FLAGS(env->ep, VM_ENV_FLAG_WB_REQUIRED)) {
+ VM_ENV_FLAGS_SET(env->ep, VM_ENV_FLAG_WB_REQUIRED);
+ }
rb_gc_mark_movable( (VALUE)rb_vm_env_prev_env(env));
}
}