summaryrefslogtreecommitdiff
path: root/imemo.c
diff options
context:
space:
mode:
authorSatoshi Tagomori <s-tagomori@sakura.ad.jp>2025-11-26 00:36:55 +0900
committerSatoshi Tagomori <tagomoris@gmail.com>2025-11-26 10:10:47 +0900
commite84b91a292f3cd94fdf5f2ef548bf2377b1cf537 (patch)
treee7b7d71d6403a8709bab91a269698cea53da3fb8 /imemo.c
parent0654bcd4f809e97bca4a099fa78db9990fa5a4ae (diff)
Box: mark/move Box object referred via ENV/rb_env_t
Diffstat (limited to 'imemo.c')
-rw-r--r--imemo.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/imemo.c b/imemo.c
index d83c690ba5..8ec58ae4a9 100644
--- a/imemo.c
+++ b/imemo.c
@@ -426,6 +426,13 @@ rb_imemo_mark_and_move(VALUE obj, bool reference_updating)
rb_gc_mark_and_move_ptr(&env->iseq);
+ if (VM_ENV_LOCAL_P(env->ep) && VM_ENV_BOXED_P(env->ep)) {
+ const rb_box_t *box = VM_ENV_BOX(env->ep);
+ if (BOX_USER_P(box)) {
+ rb_gc_mark_and_move((VALUE *)&box->box_object);
+ }
+ }
+
if (reference_updating) {
((VALUE *)env->ep)[VM_ENV_DATA_INDEX_ENV] = rb_gc_location(env->ep[VM_ENV_DATA_INDEX_ENV]);
}