From f1e98086f218f1d5de247f1670f94bfcdff2bf33 Mon Sep 17 00:00:00 2001 From: ko1 Date: Sun, 6 Sep 2009 09:16:23 +0000 Subject: * vm_insnhelper.h (CALL_SIMPLE_METHOD_IC): make a macro invoke simple method with inline cache entry. * insns.def (opt_length, opt_size): fix to use inline method cache. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24771 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ insns.def | 8 ++++---- vm_insnhelper.h | 5 +++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index d61143c2a6..0ee8c847d4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Sun Sep 6 18:13:54 2009 Koichi Sasada + + * vm_insnhelper.h (CALL_SIMPLE_METHOD_IC): make a macro + invoke simple method with inline cache entry. + + * insns.def (opt_length, opt_size): fix to use inline method cache. + Sun Sep 6 17:47:21 2009 Koichi Sasada * template/id.h.tmpl: fix this. diff --git a/insns.def b/insns.def index 7de873d4bf..031e0bcb49 100644 --- a/insns.def +++ b/insns.def @@ -1917,7 +1917,7 @@ opt_aset */ DEFINE_INSN opt_length -() +(IC ic) (VALUE recv) (VALUE val) { @@ -1939,7 +1939,7 @@ opt_length else { INSN_LABEL(normal_dispatch): PUSH(recv); - CALL_SIMPLE_METHOD(0, idLength, recv); + CALL_SIMPLE_METHOD_IC(0, idLength, recv, ic); } } @@ -1950,7 +1950,7 @@ opt_length */ DEFINE_INSN opt_size -() +(IC ic) (VALUE recv) (VALUE val) { @@ -1972,7 +1972,7 @@ opt_size else { INSN_LABEL(normal_dispatch): PUSH(recv); - CALL_SIMPLE_METHOD(0, idSize, recv); + CALL_SIMPLE_METHOD_IC(0, idSize, recv, ic); } } diff --git a/vm_insnhelper.h b/vm_insnhelper.h index bb4cef553b..d4dd5aec4d 100644 --- a/vm_insnhelper.h +++ b/vm_insnhelper.h @@ -189,4 +189,9 @@ extern VALUE ruby_vm_const_missing_count; CALL_METHOD(num, 0, 0, id, rb_method_entry(klass, id), recv); \ } while (0) +#define CALL_SIMPLE_METHOD_IC(num, id, recv, ic) do { \ + VALUE klass = CLASS_OF(recv); \ + CALL_METHOD(num, 0, 0, id, vm_method_search(id, klass, ic), recv); \ +} while (0) + #endif /* RUBY_INSNHELPER_H */ -- cgit v1.2.3