diff options
Diffstat (limited to 'vm.c')
-rw-r--r-- | vm.c | 11 |
1 files changed, 6 insertions, 5 deletions
@@ -71,7 +71,8 @@ static VALUE vm_invoke_proc(rb_thread_t *th, rb_proc_t *proc, VALUE self, VALUE defined_class, int argc, const VALUE *argv, const rb_block_t *blockptr); -static vm_state_version_t ruby_vm_global_state_version = 1; +static vm_state_version_t ruby_vm_method_state_version = 1; +static vm_state_version_t ruby_vm_constant_state_version = 1; static vm_state_version_t ruby_vm_sequence = 1; #include "vm_insnhelper.h" @@ -2075,12 +2076,12 @@ vm_define_method(rb_thread_t *th, VALUE obj, ID id, VALUE iseqval, OBJ_WRITE(miseq->self, &miseq->klass, klass); miseq->defined_method_id = id; rb_add_method(klass, id, VM_METHOD_TYPE_ISEQ, miseq, noex); - rb_clear_cache_by_class(klass); + rb_clear_method_cache_by_class(klass); if (!is_singleton && noex == NOEX_MODFUNC) { klass = rb_singleton_class(klass); rb_add_method(klass, id, VM_METHOD_TYPE_ISEQ, miseq, NOEX_PUBLIC); - rb_clear_cache_by_class(klass); + rb_clear_method_cache_by_class(klass); } } @@ -2130,8 +2131,8 @@ m_core_undef_method(VALUE self, VALUE cbase, VALUE sym) { REWIND_CFP({ rb_undef(cbase, SYM2ID(sym)); - rb_clear_cache_by_class(cbase); - rb_clear_cache_by_class(self); + rb_clear_method_cache_by_class(cbase); + rb_clear_method_cache_by_class(self); }); return Qnil; } |