From 352e923242a23ba661a8cf91e4c43c156f7d7519 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Mon, 17 Aug 2020 14:09:20 +0900 Subject: Revisit "Refactor to reduce "swap" instruction of pattern matching" Just moved "case base" after allocating cache space. --- compile.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/compile.c b/compile.c index f2ab7c3113..8af2f89424 100644 --- a/compile.c +++ b/compile.c @@ -6333,8 +6333,6 @@ compile_case3(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const orig_no INIT_ANCHOR(body_seq); INIT_ANCHOR(cond_seq); - CHECK(COMPILE(head, "case base", node->nd_head)); - branches = decl_branch_base(iseq, node, "case"); node = node->nd_body; @@ -6346,7 +6344,9 @@ compile_case3(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const orig_no elselabel = NEW_LABEL(line); ADD_INSN(head, line, putnil); /* allocate stack for cached #deconstruct value */ - ADD_INSN(head, line, swap); + + CHECK(COMPILE(head, "case base", orig_node->nd_head)); + ADD_SEQ(ret, head); /* case VAL */ while (type == NODE_IN) { -- cgit v1.2.3