summaryrefslogtreecommitdiff
path: root/iseq.c
diff options
context:
space:
mode:
Diffstat (limited to 'iseq.c')
-rw-r--r--iseq.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/iseq.c b/iseq.c
index fe33afc1a6..90fb6702f3 100644
--- a/iseq.c
+++ b/iseq.c
@@ -325,9 +325,13 @@ rb_iseq_mark(const rb_iseq_t *iseq)
if (body->call_data) {
struct rb_call_data *cds = (struct rb_call_data *)body->call_data;
for (unsigned int i=0; i<body->ci_size; i++) {
- rb_gc_mark_movable((VALUE)cds[i].ci);
+ const struct rb_callinfo *ci = cds[i].ci;
const struct rb_callcache *cc = cds[i].cc;
- if (cc && vm_cc_markable(cds[i].cc)) {
+
+ if (vm_ci_markable(ci)) {
+ rb_gc_mark_movable((VALUE)ci);
+ }
+ if (cc && vm_cc_markable(cc)) {
rb_gc_mark_movable((VALUE)cc);
// TODO: check enable
}