diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | method.h | 2 | ||||
-rw-r--r-- | vm_eval.c | 2 |
3 files changed, 10 insertions, 1 deletions
@@ -1,3 +1,10 @@ +Sat Aug 29 20:40:02 2009 Yuki Sonoda (Yugui) <yugui@yugui.jp> + + * vm_eval.c (rb_call0): gets rid of checking method cache twice. + + * method.h (rb_get_method_entry): added a prototype of the function. + (rb_method_entry_without_cache): more friendly name. + Sat Aug 29 12:16:47 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> * lib/tmpdir.rb (Dir.mktmpdir): rolled back r24699. [ruby-dev:39193] @@ -78,6 +78,8 @@ void rb_add_method_cfunc(VALUE klass, ID mid, VALUE (*func)(ANYARGS), int argc, rb_method_entry_t *rb_add_method(VALUE klass, ID mid, rb_method_type_t type, void *option, rb_method_flag_t noex); rb_method_entry_t *rb_add_method_me(VALUE klass, ID mid, const rb_method_entry_t *, rb_method_flag_t noex); rb_method_entry_t *rb_method_entry(VALUE klass, ID id); +rb_method_entry_t *rb_get_method_entry(VALUE klass, ID id); +#define rb_method_entry_without_cache(klass, id) rb_get_method_entry((klass), (id)) int rb_method_entry_arity(const rb_method_entry_t *me); void rb_gc_mark_method_entry(const rb_method_entry_t *me); void rb_free_method_entry(rb_method_entry_t *me); @@ -222,7 +222,7 @@ rb_call0(VALUE recv, ID mid, int argc, const VALUE *argv, } klass = me->klass; } - else if ((me = rb_method_entry(klass, mid)) != 0 && me->def) { + else if ((me = rb_method_entry_without_cache(klass, mid)) != 0 && me->def) { klass = me->klass; } else { |