summaryrefslogtreecommitdiff
path: root/compile.c
diff options
context:
space:
mode:
authorUrabe, Shyouhei <shyouhei@ruby-lang.org>2018-09-19 10:41:56 +0900
committerTakashi Kokubun <takashikkbn@gmail.com>2019-09-02 13:56:40 +0900
commit8ad7fafcddece2096b748178df9a3318cb1ba3ae (patch)
tree3628acfffcef258cec171918899deb36262521fb /compile.c
parentff462bc6c3d88bab9df4c8d17b420f21223984c2 (diff)
opt_regexpmatch1 is actually making things slower.
---- trunk: ruby 2.6.0dev (2018-09-18 trunk 64767) [x86_64-darwin15] ours: ruby 2.6.0dev (2018-09-18 opt_regexpmatch 64775) [x86_64-darwin15] last_commit=opt_regexpmatch1 is actually making things slower. Calculating ------------------------------------- trunk ours Optcarrot Lan_Master.nes 33.877 35.282 fps Comparison: Optcarrot Lan_Master.nes ours: 35.3 fps trunk: 33.9 fps - 1.04x slower
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/1959
Diffstat (limited to 'compile.c')
-rw-r--r--compile.c24
1 files changed, 4 insertions, 20 deletions
diff --git a/compile.c b/compile.c
index 02171c6349..6a72a87c62 100644
--- a/compile.c
+++ b/compile.c
@@ -3272,6 +3272,7 @@ iseq_specialized_instruction(rb_iseq_t *iseq, INSN *iobj)
case idMOD: SP_INSN(mod); return COMPILE_OK;
case idEq: SP_INSN(eq); return COMPILE_OK;
case idNeq: SP_INSN(neq); return COMPILE_OK;
+ case idEqTilde:SP_INSN(regexpmatch2);return COMPILE_OK;
case idLT: SP_INSN(lt); return COMPILE_OK;
case idLE: SP_INSN(le); return COMPILE_OK;
case idGT: SP_INSN(gt); return COMPILE_OK;
@@ -7591,26 +7592,9 @@ iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, in
break;
}
- if (ISEQ_COMPILE_DATA(iseq)->option->specialized_instruction) {
- /* TODO: detect by node */
- if (recv->last == recv->anchor.next &&
- INSN_OF(recv->last) == BIN(putobject) &&
- nd_type(node) == NODE_MATCH2) {
- ADD_SEQ(ret, val);
- ADD_INSN1(ret, line, opt_regexpmatch1,
- OPERAND_AT(recv->last, 0));
- }
- else {
- ADD_SEQ(ret, recv);
- ADD_SEQ(ret, val);
- ADD_INSN2(ret, line, opt_regexpmatch2, new_callinfo(iseq, idEqTilde, 1, 0, NULL, FALSE), Qnil);
- }
- }
- else {
- ADD_SEQ(ret, recv);
- ADD_SEQ(ret, val);
- ADD_SEND(ret, line, idEqTilde, INT2FIX(1));
- }
+ ADD_SEQ(ret, recv);
+ ADD_SEQ(ret, val);
+ ADD_SEND(ret, line, idEqTilde, INT2FIX(1));
if (node->nd_args) {
compile_named_capture_assign(iseq, ret, node->nd_args);