summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vm.c3
-rw-r--r--vm_method.c4
2 files changed, 1 insertions, 6 deletions
diff --git a/vm.c b/vm.c
index bc19f6f8ef..afcd5ca416 100644
--- a/vm.c
+++ b/vm.c
@@ -2153,12 +2153,10 @@ 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_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_method_cache_by_class(klass);
}
}
@@ -2208,7 +2206,6 @@ m_core_undef_method(VALUE self, VALUE cbase, VALUE sym)
{
REWIND_CFP({
rb_undef(cbase, SYM2ID(sym));
- rb_clear_method_cache_by_class(cbase);
rb_clear_method_cache_by_class(self);
});
return Qnil;
diff --git a/vm_method.c b/vm_method.c
index 0b707975bf..a95c37e30e 100644
--- a/vm_method.c
+++ b/vm_method.c
@@ -478,7 +478,6 @@ rb_add_method(VALUE klass, ID mid, rb_method_type_t type, void *opts, rb_method_
if (type != VM_METHOD_TYPE_UNDEF && type != VM_METHOD_TYPE_REFINED) {
method_added(klass, mid);
}
- rb_clear_method_cache_by_class(klass);
return me;
}
@@ -799,6 +798,7 @@ rb_export_method(VALUE klass, ID name, rb_method_flag_t noex)
if (me->def->type == VM_METHOD_TYPE_REFINED) {
me->def->body.orig_me->flag = noex;
}
+ rb_clear_method_cache_by_class(klass);
}
else {
rb_add_method(klass, name, VM_METHOD_TYPE_ZSUPER, 0, noex);
@@ -1246,7 +1246,6 @@ rb_alias(VALUE klass, ID name, ID def)
if (flag == NOEX_UNDEF) flag = orig_me->flag;
rb_method_entry_set(target_klass, name, orig_me, flag);
- rb_clear_method_cache_by_class(target_klass);
}
/*
@@ -1301,7 +1300,6 @@ set_method_visibility(VALUE self, int argc, VALUE *argv, rb_method_flag_t ex)
}
rb_export_method(self, id, ex);
}
- rb_clear_method_cache_by_class(self);
}
static VALUE