diff options
Diffstat (limited to 'class.c')
-rw-r--r-- | class.c | 7 |
1 files changed, 3 insertions, 4 deletions
@@ -247,11 +247,10 @@ clone_method(VALUE klass, ID mid, const rb_method_entry_t *me) if (me->def && me->def->type == VM_METHOD_TYPE_ISEQ) { rb_iseq_t *iseq; NODE *new_cref; - newiseqval = rb_iseq_clone(me->def->body.iseq->self, klass); + newiseqval = rb_iseq_clone(me->def->body.iseq_body.iseq->self, klass); GetISeqPtr(newiseqval, iseq); - rb_vm_rewrite_cref_stack(me->def->body.iseq->cref_stack, me->klass, klass, &new_cref); - RB_OBJ_WRITE(iseq->self, &iseq->cref_stack, new_cref); - rb_add_method(klass, mid, VM_METHOD_TYPE_ISEQ, iseq, me->flag); + rb_vm_rewrite_cref_stack(me->def->body.iseq_body.cref, me->klass, klass, &new_cref); + rb_add_method_iseq(klass, mid, iseq, new_cref, me->flag); RB_GC_GUARD(newiseqval); } else { |