From dcd77f1efdc854213cc3cd6194ea3c187617bace Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 19 Feb 2026 14:14:40 +0900 Subject: [PATCH] mruby-compiler: replace MRB_SYM_2() with MRB_SYM() macros The _2 suffix variants accept an mrb_state* parameter that is always ignored with presym enabled. Replace all uses in codegen.c, parse.y, and y.tab.c with the standard macros. The _2 macro definitions are kept in presym headers for backward compatibility. Co-authored-by: Claude --- doc/guides/symbol.md | 5 +- include/mruby/presym.h | 5 +- include/mruby/presym/enable.h | 1 + include/mruby/presym/scanning.h | 1 + mrbgems/mruby-compiler/core/codegen.c | 132 +++++++++++++------------- mrbgems/mruby-compiler/core/parse.y | 12 +-- mrbgems/mruby-compiler/core/y.tab.c | 12 +-- 7 files changed, 86 insertions(+), 82 deletions(-) diff --git a/doc/guides/symbol.md b/doc/guides/symbol.md index da055078e..8c34f75b2 100644 --- a/doc/guides/symbol.md +++ b/doc/guides/symbol.md @@ -74,5 +74,6 @@ can be specified for it). Other than that, describe only word characters excluding leading and ending punctuation. These macros are converted to static symbol IDs at compile time. -The `_2` suffix variants (e.g., `MRB_SYM_2`) accept an explicit -`mrb_state*` parameter but currently ignore it. +The `_2` suffix variants (e.g., `MRB_SYM_2`) are kept for backward +compatibility only; they accept an explicit `mrb_state*` parameter +but ignore it. New code should use the standard macros above. diff --git a/include/mruby/presym.h b/include/mruby/presym.h index f67944407..be3c17db0 100644 --- a/include/mruby/presym.h +++ b/include/mruby/presym.h @@ -31,8 +31,9 @@ * excluding leading and ending punctuation. * * These macros are expanded to compile-time integer constants. - * The `_2` suffix variants (e.g., `MRB_SYM_2`) accept an explicit - * mruby state parameter but currently ignore it. + * The `_2` suffix variants (e.g., `MRB_SYM_2`) are kept for backward + * compatibility only; they accept an explicit `mrb_state*` parameter + * but ignore it. New code should use the standard macros above. */ #endif /* MRUBY_PRESYM_H */ diff --git a/include/mruby/presym/enable.h b/include/mruby/presym/enable.h index 44b606446..bf60e8c1d 100644 --- a/include/mruby/presym/enable.h +++ b/include/mruby/presym/enable.h @@ -18,6 +18,7 @@ #define MRB_SYM_E(name) MRB_SYM_E__##name #define MRB_SYM(name) MRB_SYM__##name +/* backward compatibility: _2 variants accept but ignore mrb_state* */ #define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name #define MRB_GVSYM_2(mrb, name) MRB_GVSYM__##name #define MRB_CVSYM_2(mrb, name) MRB_CVSYM__##name diff --git a/include/mruby/presym/scanning.h b/include/mruby/presym/scanning.h index 9a3d75bdb..14110db0a 100644 --- a/include/mruby/presym/scanning.h +++ b/include/mruby/presym/scanning.h @@ -38,6 +38,7 @@ #define MRB_SYM_E(name) MRB_PRESYM_SCANNING_TAGGED(#name "=") #define MRB_SYM(name) MRB_PRESYM_SCANNING_TAGGED(#name) +/* backward compatibility: _2 variants accept but ignore mrb_state* */ #define MRB_OPSYM_2(mrb, name) MRB_OPSYM__##name(mrb) #define MRB_GVSYM_2(mrb, name) MRB_PRESYM_SCANNING_TAGGED("$" #name) #define MRB_CVSYM_2(mrb, name) MRB_PRESYM_SCANNING_TAGGED("@@" #name) diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index 9d3b1acbe..8bed690f6 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -1569,7 +1569,7 @@ static mrb_bool gen_binop(codegen_scope *s, mrb_sym op, uint16_t dst) { if (no_peephole(s)) return FALSE; - else if (op == MRB_OPSYM_2(s->mrb, aref)) { + else if (op == MRB_OPSYM(aref)) { /* GETIDX0 fusion: MOVE dst arr; LOADI_0 dst+1 -> GETIDX0 dst arr */ struct mrb_insn_data data = mrb_last_insn(s); if (data.insn == OP_LOADI_0 && data.a == (uint32_t)dst+1 && addr_pc(s, data.addr) != s->lastlabel) { @@ -1594,14 +1594,14 @@ gen_binop(codegen_scope *s, mrb_sym op, uint16_t dst) if (!get_int_operand(s, &data0, &n0)) { return FALSE; } - if (op == MRB_OPSYM_2(s->mrb, lshift)) { + if (op == MRB_OPSYM(lshift)) { if (!mrb_num_shift(s->mrb, n0, n, &n)) return FALSE; } - else if (op == MRB_OPSYM_2(s->mrb, rshift)) { + else if (op == MRB_OPSYM(rshift)) { if (n == MRB_INT_MIN) return FALSE; if (!mrb_num_shift(s->mrb, n0, -n, &n)) return FALSE; } - else if (op == MRB_OPSYM_2(s->mrb, mod) && n != 0) { + else if (op == MRB_OPSYM(mod) && n != 0) { if (n0 == MRB_INT_MIN && n == -1) { n = 0; } @@ -1613,13 +1613,13 @@ gen_binop(codegen_scope *s, mrb_sym op, uint16_t dst) n = n1; } } - else if (op == MRB_OPSYM_2(s->mrb, and)) { + else if (op == MRB_OPSYM(and)) { n = n0 & n; } - else if (op == MRB_OPSYM_2(s->mrb, or)) { + else if (op == MRB_OPSYM(or)) { n = n0 | n; } - else if (op == MRB_OPSYM_2(s->mrb, xor)) { + else if (op == MRB_OPSYM(xor)) { n = n0 ^ n; } else { @@ -2214,14 +2214,14 @@ gen_uniop(codegen_scope *s, mrb_sym sym, uint16_t dst) mrb_int n; if (!get_int_operand(s, &data, &n)) return FALSE; - if (sym == MRB_OPSYM_2(s->mrb, plus)) { + if (sym == MRB_OPSYM(plus)) { /* unary plus does nothing */ } - else if (sym == MRB_OPSYM_2(s->mrb, minus)) { + else if (sym == MRB_OPSYM(minus)) { if (n == MRB_INT_MIN) return FALSE; n = -n; } - else if (sym == MRB_OPSYM_2(s->mrb, neg)) { + else if (sym == MRB_OPSYM(neg)) { n = ~n; } else { @@ -2327,13 +2327,13 @@ search_upvar(codegen_scope *s, mrb_sym id, int *idx) lv++; } - if (id == MRB_OPSYM_2(s->mrb, and)) { + if (id == MRB_OPSYM(and)) { codegen_error(s, "No anonymous block parameter"); } - else if (id == MRB_OPSYM_2(s->mrb, mul)) { + else if (id == MRB_OPSYM(mul)) { codegen_error(s, "No anonymous rest parameter"); } - else if (id == MRB_OPSYM_2(s->mrb, pow)) { + else if (id == MRB_OPSYM(pow)) { codegen_error(s, "No anonymous keyword rest parameter"); } else { @@ -2896,7 +2896,7 @@ gen_hash(codegen_scope *s, node *tree, int val, int limit) mrb_bool first = TRUE; while (tree) { - if (node_to_sym(tree->car->car) == MRB_OPSYM_2(s->mrb, pow)) { + if (node_to_sym(tree->car->car) == MRB_OPSYM(pow)) { if (val && first) { genop_2(s, OP_HASH, cursp(), 0); push(); @@ -3387,7 +3387,7 @@ codegen_hash(codegen_scope *s, node *varnode, int val) struct mrb_ast_node *value = pair->cdr; /* Check if this is a double-splat (**kwargs) */ - if (node_to_sym(key) == MRB_OPSYM_2(s->mrb, pow)) { + if (node_to_sym(key) == MRB_OPSYM(pow)) { /* Flush any accumulated regular pairs first */ if (val && first && regular_pairs == 0) { /* First element is splat - create empty hash */ @@ -3545,17 +3545,17 @@ codegen_call(codegen_scope *s, node *varnode, int val) node *args = call->args; if (!noop) { - if (sym == MRB_OPSYM_2(s->mrb, add)) opt_op = OP_ADD; - else if (sym == MRB_OPSYM_2(s->mrb, sub)) opt_op = OP_SUB; - else if (sym == MRB_OPSYM_2(s->mrb, mul)) opt_op = OP_MUL; - else if (sym == MRB_OPSYM_2(s->mrb, div)) opt_op = OP_DIV; - else if (sym == MRB_OPSYM_2(s->mrb, lt)) opt_op = OP_LT; - else if (sym == MRB_OPSYM_2(s->mrb, le)) opt_op = OP_LE; - else if (sym == MRB_OPSYM_2(s->mrb, gt)) opt_op = OP_GT; - else if (sym == MRB_OPSYM_2(s->mrb, ge)) opt_op = OP_GE; - else if (sym == MRB_OPSYM_2(s->mrb, eq)) opt_op = OP_EQ; - else if (sym == MRB_OPSYM_2(s->mrb, aref)) opt_op = OP_GETIDX; - else if (sym == MRB_OPSYM_2(s->mrb, aset)) opt_op = OP_SETIDX; + if (sym == MRB_OPSYM(add)) opt_op = OP_ADD; + else if (sym == MRB_OPSYM(sub)) opt_op = OP_SUB; + else if (sym == MRB_OPSYM(mul)) opt_op = OP_MUL; + else if (sym == MRB_OPSYM(div)) opt_op = OP_DIV; + else if (sym == MRB_OPSYM(lt)) opt_op = OP_LT; + else if (sym == MRB_OPSYM(le)) opt_op = OP_LE; + else if (sym == MRB_OPSYM(gt)) opt_op = OP_GT; + else if (sym == MRB_OPSYM(ge)) opt_op = OP_GE; + else if (sym == MRB_OPSYM(eq)) opt_op = OP_EQ; + else if (sym == MRB_OPSYM(aref)) opt_op = OP_GETIDX; + else if (sym == MRB_OPSYM(aset)) opt_op = OP_SETIDX; } if (!call->receiver || (opt_op == OP_NOP && node_type(call->receiver) == NODE_SELF)) { @@ -3693,7 +3693,7 @@ codegen_call_assign(codegen_scope *s, node *varnode, node *rhs, int sp, int val) /* Check for optimizable operations */ if (!noop) { - if (mid == MRB_OPSYM_2(s->mrb, aref)) opt_op = OP_SETIDX; + if (mid == MRB_OPSYM(aref)) opt_op = OP_SETIDX; } top = cursp(); @@ -3947,7 +3947,7 @@ codegen_if(codegen_scope *s, node *varnode, int val) if (node_type(condition) == NODE_CALL) { /* Variable-sized NODE_CALL */ struct mrb_ast_call_node *call_n = (struct mrb_ast_call_node*)condition; - mrb_sym sym_nil_p = MRB_SYM_Q_2(s->mrb, nil); + mrb_sym sym_nil_p = MRB_SYM_Q(nil); if (call_n->method_name == sym_nil_p && callargs_empty(call_n->args)) { nil_p = TRUE; codegen(s, call_n->receiver, VAL); @@ -4224,7 +4224,7 @@ codegen_for(codegen_scope *s, node *varnode, int val) genop_2(s, OP_BLOCK, cursp(), s->irep->rlen-1); push();pop(); /* space for a block */ pop(); - idx = sym_idx(s, MRB_SYM_2(s->mrb, each)); + idx = sym_idx(s, MRB_SYM(each)); genop_3(s, OP_SENDB, cursp(), idx, 0); if (val) push(); } @@ -4274,10 +4274,10 @@ codegen_case(codegen_scope *s, node *varnode, int val) gen_move(s, cursp(), head, 0); push(); push(); pop(); pop(); pop(); if (is_splat_node(n->car)) { - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_SYM_2(s->mrb, __case_eqq)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_SYM(__case_eqq)), 1); } else { - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM_2(s->mrb, eqq)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM(eqq)), 1); } } else { @@ -4490,7 +4490,7 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, codegen(s, pat_val->value, VAL); gen_move(s, cursp(), target, 0); push(); push(); pop(); pop(); pop(); - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM_2(s->mrb, eqq)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM(eqq)), 1); /* Jump to fail if not matched */ tmp = genjmp2(s, OP_JMPNOT, cursp(), *fail_pos, 1); *fail_pos = tmp; @@ -4587,7 +4587,7 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, push(); gen_move(s, cursp(), target, 0); /* Load target */ push(); push(); pop(); pop(); pop(); - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM_2(s->mrb, eqq)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM(eqq)), 1); /* Jump to fail if not matched */ tmp = genjmp2(s, OP_JMPNOT, cursp(), *fail_pos, 1); *fail_pos = tmp; @@ -4676,7 +4676,7 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, /* arr at cursp-2, range at cursp-1 */ pop(); /* cursp now at range position */ pop(); /* cursp now at arr position */ - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM_2(s->mrb, aref)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM(aref)), 1); if (var_idx > 0) { gen_move(s, var_idx, cursp(), 1); } @@ -4704,7 +4704,7 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, /* Call deconstruct on target */ gen_move(s, cursp(), target, 0); push(); - genop_3(s, OP_SEND, arr_reg, sym_idx(s, MRB_SYM_2(s->mrb, deconstruct)), 0); + genop_3(s, OP_SEND, arr_reg, sym_idx(s, MRB_SYM(deconstruct)), 0); /* Check length constraints */ if (pat_arr->rest == 0) { @@ -4712,7 +4712,7 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, /* Generate: arr.size == pre_len using EQ opcode */ gen_move(s, cursp(), arr_reg, 0); push(); - genop_3(s, OP_SEND, cursp() - 1, sym_idx(s, MRB_SYM_2(s->mrb, size)), 0); + genop_3(s, OP_SEND, cursp() - 1, sym_idx(s, MRB_SYM(size)), 0); gen_int(s, cursp(), pre_len); /* EQ: R[a] = R[a] == R[a+1]; size at cursp-1, pre_len at cursp */ genop_1(s, OP_EQ, cursp() - 1); @@ -4727,7 +4727,7 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, /* Generate: arr.size >= min_len using GE opcode */ gen_move(s, cursp(), arr_reg, 0); push(); - genop_3(s, OP_SEND, cursp() - 1, sym_idx(s, MRB_SYM_2(s->mrb, size)), 0); + genop_3(s, OP_SEND, cursp() - 1, sym_idx(s, MRB_SYM(size)), 0); gen_int(s, cursp(), min_len); /* GE: R[a] = R[a] >= R[a+1]; size at cursp-1, min_len at cursp */ genop_1(s, OP_GE, cursp() - 1); @@ -4745,7 +4745,7 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, push(); gen_int(s, cursp(), i); push(); push(); pop(); pop(); pop(); - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM_2(s->mrb, aref)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM(aref)), 1); push(); /* Preserve element result for codegen_pattern */ /* Match element pattern */ codegen_pattern(s, elem->car, cursp() - 1, fail_pos, -1); @@ -4773,7 +4773,7 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, /* arr at cursp-2, range at cursp-1 */ pop(); /* cursp now at range position */ pop(); /* cursp now at arr position */ - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM_2(s->mrb, aref)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM(aref)), 1); if (var_idx > 0) { gen_move(s, var_idx, cursp(), 1); } @@ -4788,7 +4788,7 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, push(); gen_int(s, cursp(), i); push(); push(); pop(); pop(); pop(); - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM_2(s->mrb, aref)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM(aref)), 1); push(); /* Preserve element result for codegen_pattern */ /* Match element pattern */ codegen_pattern(s, elem->car, cursp() - 1, fail_pos, -1); @@ -4824,15 +4824,15 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, /* Call deconstruct on target */ gen_move(s, cursp(), target, 0); push(); - genop_3(s, OP_SEND, arr_reg, sym_idx(s, MRB_SYM_2(s->mrb, deconstruct)), 0); + genop_3(s, OP_SEND, arr_reg, sym_idx(s, MRB_SYM(deconstruct)), 0); /* Check minimum length: arr.size >= elems_len */ gen_move(s, cursp(), arr_reg, 0); push(); - genop_3(s, OP_SEND, cursp() - 1, sym_idx(s, MRB_SYM_2(s->mrb, size)), 0); + genop_3(s, OP_SEND, cursp() - 1, sym_idx(s, MRB_SYM(size)), 0); gen_int(s, cursp(), elems_len); push(); push(); pop(); pop(); pop(); - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM_2(s->mrb, ge)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM(ge)), 1); tmp = genjmp2(s, OP_JMPNOT, cursp(), *fail_pos, 1); *fail_pos = tmp; @@ -4849,15 +4849,15 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, /* Compute: arr.size - elems_len */ gen_move(s, cursp(), arr_reg, 0); push(); - genop_3(s, OP_SEND, cursp() - 1, sym_idx(s, MRB_SYM_2(s->mrb, size)), 0); + genop_3(s, OP_SEND, cursp() - 1, sym_idx(s, MRB_SYM(size)), 0); gen_int(s, cursp(), elems_len); push(); push(); pop(); pop(); pop(); - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM_2(s->mrb, sub)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM(sub)), 1); /* Now cursp() has (size - elems_len), compare: idx <= (size - elems_len) */ gen_move(s, cursp() + 1, idx_reg, 0); push(); push(); push(); pop(); pop(); pop(); - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM_2(s->mrb, ge)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM(ge)), 1); tmp = genjmp2(s, OP_JMPNOT, cursp(), *fail_pos, 1); *fail_pos = tmp; @@ -4875,10 +4875,10 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, push(); gen_int(s, cursp(), offset); push(); push(); pop(); pop(); pop(); - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM_2(s->mrb, add)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM(add)), 1); } push(); push(); pop(); pop(); pop(); - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM_2(s->mrb, aref)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM(aref)), 1); push(); /* Preserve element result for codegen_pattern */ /* Match element pattern - on fail, try next index */ codegen_pattern(s, elem->car, cursp() - 1, &match_fail, -1); @@ -4902,7 +4902,7 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, /* arr at cursp-2, range at cursp-1 */ pop(); /* cursp now at range position */ pop(); /* cursp now at arr position */ - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM_2(s->mrb, aref)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM(aref)), 1); if (var_idx > 0) { gen_move(s, var_idx, cursp(), 1); } @@ -4922,7 +4922,7 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, push(); gen_int(s, cursp(), elems_len); /* elems_len at cursp */ push(); push(); pop(); pop(); pop(); - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM_2(s->mrb, add)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM(add)), 1); /* start index (idx+elems_len) now at cursp */ push(); gen_int(s, cursp(), -1); /* end=-1 at cursp */ @@ -4931,7 +4931,7 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, /* arr at cursp-2, range at cursp-1 */ pop(); /* cursp now at range position */ pop(); /* cursp now at arr position */ - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM_2(s->mrb, aref)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM(aref)), 1); if (var_idx > 0) { gen_move(s, var_idx, cursp(), 1); } @@ -4947,7 +4947,7 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, push(); gen_int(s, cursp(), 1); push(); push(); pop(); pop(); pop(); - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM_2(s->mrb, add)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM(add)), 1); gen_move(s, idx_reg, cursp(), 0); genjmp(s, OP_JMP, loop_start); @@ -4982,7 +4982,7 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, genop_1(s, OP_LOADNIL, cursp()); push(); } - genop_3(s, OP_SEND, hash_reg, sym_idx(s, MRB_SYM_2(s->mrb, deconstruct_keys)), 1); + genop_3(s, OP_SEND, hash_reg, sym_idx(s, MRB_SYM(deconstruct_keys)), 1); pop(); /* Check all keys exist and get values via __pat_values */ @@ -4991,7 +4991,7 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, gen_move(s, vals_reg, hash_reg, 0); push(); gen_pat_keys_ary(s, pat_hash->pairs, num_keys); - genop_3(s, OP_SEND, vals_reg, sym_idx(s, MRB_SYM_2(s->mrb, __pat_values)), 1); + genop_3(s, OP_SEND, vals_reg, sym_idx(s, MRB_SYM(__pat_values)), 1); pop(); /* keys_ary */ /* vals_reg = values array or false; fail if false */ tmp = genjmp2(s, OP_JMPNOT, vals_reg, *fail_pos, 1); @@ -5006,7 +5006,7 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, push(); gen_int(s, cursp(), i); push(); push(); pop(); pop(); pop(); - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM_2(s->mrb, aref)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_OPSYM(aref)), 1); push(); codegen_pattern(s, pat, cursp() - 1, fail_pos, -1); @@ -5020,7 +5020,7 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, /* **nil or empty {}: exact match - verify hash.size == num_keys */ gen_move(s, cursp(), hash_reg, 0); push(); - genop_3(s, OP_SEND, cursp() - 1, sym_idx(s, MRB_SYM_2(s->mrb, size)), 0); + genop_3(s, OP_SEND, cursp() - 1, sym_idx(s, MRB_SYM(size)), 0); gen_int(s, cursp(), num_keys); genop_1(s, OP_EQ, cursp() - 1); tmp = genjmp2(s, OP_JMPNOT, cursp() - 1, *fail_pos, 1); @@ -5037,11 +5037,11 @@ codegen_pattern(codegen_scope *s, node *pattern, int target, uint32_t *fail_pos, push(); if (num_keys > 0) { gen_pat_keys_ary(s, pat_hash->pairs, num_keys); - genop_3(s, OP_SEND, recv, sym_idx(s, MRB_SYM_2(s->mrb, __except)), 1); + genop_3(s, OP_SEND, recv, sym_idx(s, MRB_SYM(__except)), 1); pop(); } else { - genop_3(s, OP_SEND, recv, sym_idx(s, MRB_SYM_2(s->mrb, dup)), 0); + genop_3(s, OP_SEND, recv, sym_idx(s, MRB_SYM(dup)), 0); } if (var_idx > 0) { gen_move(s, var_idx, recv, 1); @@ -5643,7 +5643,7 @@ codegen_yield(codegen_scope *s, node *varnode, int val) } else { /* fallback: use SEND for keyword args or splat */ - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_SYM_2(s->mrb, call)), n|(nk<<4)); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_SYM(call)), n|(nk<<4)); } if (val) push(); } @@ -5844,14 +5844,14 @@ codegen_rescue(codegen_scope *s, node *varnode, int val) gen_move(s, cursp(), exc, 0); push_n(2); pop_n(2); /* space for one arg and a block */ pop(); - genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_SYM_2(s->mrb, __case_eqq)), 1); + genop_3(s, OP_SEND, cursp(), sym_idx(s, MRB_SYM(__case_eqq)), 1); } else { if (n4) { codegen(s, n4->car, VAL); } else { - genop_2(s, OP_GETCONST, cursp(), sym_idx(s, MRB_SYM_2(s->mrb, StandardError))); + genop_2(s, OP_GETCONST, cursp(), sym_idx(s, MRB_SYM(StandardError))); push(); } pop(); @@ -5992,7 +5992,7 @@ codegen_xstr(codegen_scope *s, node *varnode, int val) push(); /* for block */ pop_n(3); - sym = sym_idx(s, MRB_OPSYM_2(s->mrb, tick)); /* ` */ + sym = sym_idx(s, MRB_OPSYM(tick)); /* ` */ genop_3(s, OP_SSEND, cursp(), sym, 1); if (val) { @@ -6042,7 +6042,7 @@ codegen_regx(codegen_scope *s, node *varnode, int val) push(); /* space for a block */ pop_n(argc+2); - sym = sym_idx(s, MRB_SYM_2(s->mrb, compile)); + sym = sym_idx(s, MRB_SYM(compile)); genop_3(s, OP_SEND, cursp(), sym, argc); push(); } @@ -6182,7 +6182,7 @@ codegen_negate(codegen_scope *s, node *varnode, int val) codegen(s, tree, VAL); pop(); push_n(2);pop_n(2); /* space for receiver&block */ - mrb_sym minus = MRB_OPSYM_2(s->mrb, minus); + mrb_sym minus = MRB_OPSYM(minus); if (!gen_uniop(s, minus, cursp())) { genop_3(s, OP_SEND, cursp(), sym_idx(s, minus), 0); } @@ -6335,10 +6335,10 @@ codegen_block_arg(codegen_scope *s, node *varnode, int val) struct mrb_ast_block_arg_node *n = block_arg_node(varnode); if (!n->value) { - int idx = lv_idx(s, MRB_OPSYM_2(s->mrb, and)); + int idx = lv_idx(s, MRB_OPSYM(and)); if (idx == 0) { - gen_getupvar(s, cursp(), MRB_OPSYM_2(s->mrb, and)); + gen_getupvar(s, cursp(), MRB_OPSYM(and)); } else { gen_move(s, cursp(), idx, val); diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 95e9df9cc..cb54dd672 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -91,7 +91,7 @@ intern_gen(parser_state *p, const char *s, size_t len) } #define intern(s,len) intern_gen(p,(s),(len)) -#define intern_op(op) MRB_OPSYM_2(p->mrb, op) +#define intern_op(op) MRB_OPSYM(op) static mrb_sym intern_numparam_gen(parser_state *p, int num) @@ -1414,14 +1414,14 @@ new_int_n(parser_state *p, int32_t val) static node* new_imaginary(parser_state *p, node *imaginary) { - return new_fcall(p, MRB_SYM_2(p->mrb, Complex), + return new_fcall(p, MRB_SYM(Complex), new_callargs(p, list2(new_int_n(p, 0), imaginary), 0, 0)); } static node* new_rational(parser_state *p, node *rational) { - return new_fcall(p, MRB_SYM_2(p->mrb, Rational), new_callargs(p, list1(rational), 0, 0)); + return new_fcall(p, MRB_SYM(Rational), new_callargs(p, list1(rational), 0, 0)); } /* Read integer into int32_t with overflow detection */ @@ -3805,11 +3805,11 @@ method_call : operation paren_args } | primary_value call_op paren_args { - $$ = new_call(p, $1, MRB_SYM_2(p->mrb, call), $3, $2); + $$ = new_call(p, $1, MRB_SYM(call), $3, $2); } | primary_value tCOLON2 paren_args { - $$ = new_call(p, $1, MRB_SYM_2(p->mrb, call), $3, tCOLON2); + $$ = new_call(p, $1, MRB_SYM(call), $3, tCOLON2); } | keyword_super paren_args { @@ -4496,7 +4496,7 @@ var_ref : variable } | keyword__ENCODING__ { - $$ = new_fcall(p, MRB_SYM_2(p->mrb, __ENCODING__), 0); + $$ = new_fcall(p, MRB_SYM(__ENCODING__), 0); } ; diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c index 7eff81985..9242d6149 100644 --- a/mrbgems/mruby-compiler/core/y.tab.c +++ b/mrbgems/mruby-compiler/core/y.tab.c @@ -153,7 +153,7 @@ intern_gen(parser_state *p, const char *s, size_t len) } #define intern(s,len) intern_gen(p,(s),(len)) -#define intern_op(op) MRB_OPSYM_2(p->mrb, op) +#define intern_op(op) MRB_OPSYM(op) static mrb_sym intern_numparam_gen(parser_state *p, int num) @@ -1476,14 +1476,14 @@ new_int_n(parser_state *p, int32_t val) static node* new_imaginary(parser_state *p, node *imaginary) { - return new_fcall(p, MRB_SYM_2(p->mrb, Complex), + return new_fcall(p, MRB_SYM(Complex), new_callargs(p, list2(new_int_n(p, 0), imaginary), 0, 0)); } static node* new_rational(parser_state *p, node *rational) { - return new_fcall(p, MRB_SYM_2(p->mrb, Rational), new_callargs(p, list1(rational), 0, 0)); + return new_fcall(p, MRB_SYM(Rational), new_callargs(p, list1(rational), 0, 0)); } /* Read integer into int32_t with overflow detection */ @@ -10219,7 +10219,7 @@ yyreduce: case 417: /* method_call: primary_value call_op paren_args */ #line 3807 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), (yyvsp[-1].num)); + (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM(call), (yyvsp[0].nd), (yyvsp[-1].num)); } #line 10225 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -10227,7 +10227,7 @@ yyreduce: case 418: /* method_call: primary_value "::" paren_args */ #line 3811 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), tCOLON2); + (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM(call), (yyvsp[0].nd), tCOLON2); } #line 10233 "mrbgems/mruby-compiler/core/y.tab.c" break; @@ -11244,7 +11244,7 @@ yyreduce: case 565: /* var_ref: "'__ENCODING__'" */ #line 4498 "mrbgems/mruby-compiler/core/parse.y" { - (yyval.nd) = new_fcall(p, MRB_SYM_2(p->mrb, __ENCODING__), 0); + (yyval.nd) = new_fcall(p, MRB_SYM(__ENCODING__), 0); } #line 11250 "mrbgems/mruby-compiler/core/y.tab.c" break;