summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwanabe <s.wanabe@gmail.com>2020-08-16 18:53:39 +0900
committerwanabe <s.wanabe@gmail.com>2020-08-16 18:53:39 +0900
commit3a4be429b50062122d1616256de38649464d3146 (patch)
tree57432d95e9f141b56cfe1dec1d09fdfdb151642c
parent5c40c88a3e3361b77662b3f699fbffeb32663ce3 (diff)
Refactor to reduce "swap" instruction of pattern matching
-rw-r--r--compile.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/compile.c b/compile.c
index f2ab7c3113..519e12f1ca 100644
--- a/compile.c
+++ b/compile.c
@@ -6333,6 +6333,7 @@ compile_case3(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const orig_no
INIT_ANCHOR(body_seq);
INIT_ANCHOR(cond_seq);
+ ADD_INSN(head, line, putnil); /* allocate stack for cached #deconstruct value */
CHECK(COMPILE(head, "case base", node->nd_head));
branches = decl_branch_base(iseq, node, "case");
@@ -6345,8 +6346,6 @@ compile_case3(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const orig_no
endlabel = NEW_LABEL(line);
elselabel = NEW_LABEL(line);
- ADD_INSN(head, line, putnil); /* allocate stack for cached #deconstruct value */
- ADD_INSN(head, line, swap);
ADD_SEQ(ret, head); /* case VAL */
while (type == NODE_IN) {