diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-10-22 00:19:12 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-10-22 00:19:12 +0000 |
commit | 4481385e427952b419c2737df23dc3ad51ff3f46 (patch) | |
tree | fcef0e0276bc3e1833af7bc2284797746a6669b1 /vm_insnhelper.c | |
parent | 7949c2d3739a2b78232e62e418021d1fb75909ad (diff) | |
download | ruby-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.c | 5 |
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)) { |