diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | compile.c | 2 | ||||
-rw-r--r-- | insns.def | 6 |
3 files changed, 12 insertions, 3 deletions
@@ -1,3 +1,10 @@ +Sat Aug 31 15:03:00 2013 Charlie Somerville <charliesome@ruby-lang.org> + + * compile.c (NODE_MATCH3): pass CALL_INFO to opt_regexpmatch2 + + * insns.def (opt_regexpmatch2): use CALL_SIMPLE_METHOD to call =~ if + the receiver is not a T_STRING [Bug #8847] [ruby-core:56916] + Sat Aug 31 14:07:11 2013 Tanaka Akira <akr@fsij.org> * lib/securerandom.rb (random_bytes): Use Process.clock_gettime. @@ -4760,7 +4760,7 @@ iseq_compile_each(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int poped) else { ADD_SEQ(ret, recv); ADD_SEQ(ret, val); - ADD_INSN(ret, line, opt_regexpmatch2); + ADD_INSN1(ret, line, opt_regexpmatch2, new_callinfo(iseq, idEqTilde, 1, 0, 0)); } } else { @@ -2090,7 +2090,7 @@ opt_regexpmatch1 */ DEFINE_INSN opt_regexpmatch2 -() +(CALL_INFO ci) (VALUE obj2, VALUE obj1) (VALUE val) { @@ -2098,7 +2098,9 @@ opt_regexpmatch2 val = rb_reg_match(obj1, obj2); } else { - val = rb_funcall(obj2, idEqTilde, 1, obj1); + PUSH(obj2); + PUSH(obj1); + CALL_SIMPLE_METHOD(obj2); } } |