summaryrefslogtreecommitdiff
path: root/vm_insnhelper.c
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-05-26 05:26:57 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-05-26 05:26:57 +0000
commitad0f8ff76cb6c698e75dbde6011a9251d5efd13b (patch)
treee53aab30f2922c74a24212ecd5b3be1f01528d28 /vm_insnhelper.c
parent8dce62218aee641d0d8384b0b73bfcbf073f21ae (diff)
Symbol support for opt_eq_func.
* vm_insnhelper.c (opt_eq_func): optimize for symbol comparison. [Bug #13330] [fix GH-1540] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58895 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r--vm_insnhelper.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index 4c25ba6e8d..f0832eac74 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -1325,6 +1325,11 @@ opt_eq_func(VALUE recv, VALUE obj, CALL_INFO ci, CALL_CACHE cc)
return rb_str_equal(recv, obj);
}
}
+ else if (SYMBOL_P(recv) && SYMBOL_P(obj)) {
+ if (EQ_UNREDEFINED_P(SYMBOL)) {
+ return (recv == obj) ? Qtrue : Qfalse;
+ }
+ }
{
vm_search_method(ci, cc, recv);