aboutsummaryrefslogtreecommitdiffstats
path: root/vm_insnhelper.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-10-22 00:19:12 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-10-22 00:19:12 +0000
commit4481385e427952b419c2737df23dc3ad51ff3f46 (patch)
treefcef0e0276bc3e1833af7bc2284797746a6669b1 /vm_insnhelper.c
parent7949c2d3739a2b78232e62e418021d1fb75909ad (diff)
downloadruby-4481385e427952b419c2737df23dc3ad51ff3f46.tar.gz
vm_insnhelper.c: array aref optimization
* vm_insnhelper.c (vm_opt_aref): optimize on other than fixnum argument too. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60333 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r--vm_insnhelper.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index 652b3d8133..0d23359f5a 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -3584,9 +3584,8 @@ vm_opt_aref(VALUE recv, VALUE obj)
return Qundef;
}
else if (RBASIC_CLASS(recv) == rb_cArray &&
- BASIC_OP_UNREDEFINED_P(BOP_AREF, ARRAY_REDEFINED_OP_FLAG) &&
- FIXNUM_P(obj)) {
- return rb_ary_entry(recv, FIX2LONG(obj));
+ BASIC_OP_UNREDEFINED_P(BOP_AREF, ARRAY_REDEFINED_OP_FLAG)) {
+ return rb_ary_aref1(recv, obj);
}
else if (RBASIC_CLASS(recv) == rb_cHash &&
BASIC_OP_UNREDEFINED_P(BOP_AREF, HASH_REDEFINED_OP_FLAG)) {