Use MRB_OPSYM() instead of mrb_intern_lit().

This commit is contained in:
Yukihiro "Matz" Matsumoto
2020-05-15 17:41:00 +09:00
parent 1bcf6d9f3c
commit e3e5596960
6 changed files with 57 additions and 57 deletions
+4 -4
View File
@@ -1742,7 +1742,7 @@ codegen(codegen_scope *s, node *tree, int val)
genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_SYM(__case_eqq)), 1);
}
else {
genop_3(s, OP_SEND, cursp(), new_sym(s, mrb_intern_lit(s->mrb, "===")), 1);
genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_OPSYM(eqq)), 1);
}
}
else {
@@ -2545,7 +2545,7 @@ codegen(codegen_scope *s, node *tree, int val)
default:
if (val) {
int sym = new_sym(s, mrb_intern_lit(s->mrb, "-@"));
int sym = new_sym(s, MRB_OPSYM(minus));
codegen(s, tree, VAL);
pop();
genop_3(s, OP_SEND, cursp(), sym, 0);
@@ -2637,7 +2637,7 @@ codegen(codegen_scope *s, node *tree, int val)
}
push(); /* for block */
pop_n(3);
sym = new_sym(s, mrb_intern_lit(s->mrb, "`"));
sym = new_sym(s, MRB_OPSYM(tick)); /* ` */
genop_3(s, OP_SEND, cursp(), sym, 1);
if (val) push();
mrb_gc_arena_restore(s->mrb, ai);
@@ -2657,7 +2657,7 @@ codegen(codegen_scope *s, node *tree, int val)
genop_2(s, OP_STRING, cursp(), off);
push(); push();
pop_n(3);
sym = new_sym(s, mrb_intern_lit(s->mrb, "`"));
sym = new_sym(s, MRB_OPSYM(tick)); /* ` */
genop_3(s, OP_SEND, cursp(), sym, 1);
if (val) push();
mrb_gc_arena_restore(s->mrb, ai);
+37 -37
View File
@@ -311,14 +311,14 @@ static void
local_add_blk(parser_state *p, mrb_sym blk)
{
/* allocate register for block */
local_add_f(p, blk ? blk : intern_lit("&"));
local_add_f(p, blk ? blk : MRB_OPSYM(and));
}
static void
local_add_kw(parser_state *p, mrb_sym kwd)
{
/* allocate register for keywords hash */
local_add_f(p, kwd ? kwd : intern_lit("**"));
local_add_f(p, kwd ? kwd : MRB_OPSYM(pow));
}
static node*
@@ -1671,7 +1671,7 @@ command_asgn : lhs '=' command_rhs
}
| primary_value '[' opt_call_args ']' tOP_ASGN command_rhs
{
$$ = new_op_asgn(p, new_call(p, $1, intern_lit("[]"), $3, '.'), $5, $6);
$$ = new_op_asgn(p, new_call(p, $1, MRB_OPSYM(aref), $3, '.'), $5, $6);
}
| primary_value call_op tIDENTIFIER tOP_ASGN command_rhs
{
@@ -1902,7 +1902,7 @@ mlhs_node : variable
}
| primary_value '[' opt_call_args ']'
{
$$ = new_call(p, $1, intern_lit("[]"), $3, '.');
$$ = new_call(p, $1, MRB_OPSYM(aref), $3, '.');
}
| primary_value call_op tIDENTIFIER
{
@@ -1941,7 +1941,7 @@ lhs : variable
}
| primary_value '[' opt_call_args ']'
{
$$ = new_call(p, $1, intern_lit("[]"), $3, '.');
$$ = new_call(p, $1, MRB_OPSYM(aref), $3, '.');
}
| primary_value call_op tIDENTIFIER
{
@@ -2029,36 +2029,36 @@ undef_list : fsym
}
;
op : '|' { $$ = intern_lit("|"); }
| '^' { $$ = intern_lit("^"); }
| '&' { $$ = intern_lit("&"); }
| tCMP { $$ = intern_lit("<=>"); }
| tEQ { $$ = intern_lit("=="); }
| tEQQ { $$ = intern_lit("==="); }
| tMATCH { $$ = intern_lit("=~"); }
| tNMATCH { $$ = intern_lit("!~"); }
| '>' { $$ = intern_lit(">"); }
| tGEQ { $$ = intern_lit(">="); }
| '<' { $$ = intern_lit("<"); }
| tLEQ { $$ = intern_lit("<="); }
| tNEQ { $$ = intern_lit("!="); }
| tLSHFT { $$ = intern_lit("<<"); }
| tRSHFT { $$ = intern_lit(">>"); }
| '+' { $$ = intern_lit("+"); }
| '-' { $$ = intern_lit("-"); }
| '*' { $$ = intern_lit("*"); }
| tSTAR { $$ = intern_lit("*"); }
| '/' { $$ = intern_lit("/"); }
| '%' { $$ = intern_lit("%"); }
| tPOW { $$ = intern_lit("**"); }
| tDSTAR { $$ = intern_lit("**"); }
| '!' { $$ = intern_lit("!"); }
| '~' { $$ = intern_lit("~"); }
| tUPLUS { $$ = intern_lit("+@"); }
| tUMINUS { $$ = intern_lit("-@"); }
| tAREF { $$ = intern_lit("[]"); }
| tASET { $$ = intern_lit("[]="); }
| '`' { $$ = intern_lit("`"); }
op : '|' { $$ = MRB_OPSYM(or); }
| '^' { $$ = MRB_OPSYM(xor); }
| '&' { $$ = MRB_OPSYM(and); }
| tCMP { $$ = MRB_OPSYM(cmp); }
| tEQ { $$ = MRB_OPSYM(eq); }
| tEQQ { $$ = MRB_OPSYM(eqq); }
| tMATCH { $$ = MRB_OPSYM(match); }
| tNMATCH { $$ = MRB_OPSYM(nmatch); }
| '>' { $$ = MRB_OPSYM(gt); }
| tGEQ { $$ = MRB_OPSYM(ge); }
| '<' { $$ = MRB_OPSYM(lt); }
| tLEQ { $$ = MRB_OPSYM(le); }
| tNEQ { $$ = MRB_OPSYM(neq); }
| tLSHFT { $$ = MRB_OPSYM(lshift); }
| tRSHFT { $$ = MRB_OPSYM(rshift); }
| '+' { $$ = MRB_OPSYM(add); }
| '-' { $$ = MRB_OPSYM(sub); }
| '*' { $$ = MRB_OPSYM(mul); }
| tSTAR { $$ = MRB_OPSYM(mul); }
| '/' { $$ = MRB_OPSYM(div); }
| '%' { $$ = MRB_OPSYM(mod); }
| tPOW { $$ = MRB_OPSYM(pow); }
| tDSTAR { $$ = MRB_OPSYM(pow); }
| '!' { $$ = MRB_OPSYM(not); }
| '~' { $$ = MRB_OPSYM(neg); }
| tUPLUS { $$ = MRB_OPSYM(plus); }
| tUMINUS { $$ = MRB_OPSYM(minus); }
| tAREF { $$ = MRB_OPSYM(aref); }
| tASET { $$ = MRB_OPSYM(aset); }
| '`' { $$ = MRB_OPSYM(tick); }
;
reswords : keyword__LINE__ | keyword__FILE__ | keyword__ENCODING__
@@ -2288,8 +2288,8 @@ paren_args : '(' opt_call_args ')'
| '(' tDOT3 rparen
{
#if 1
mrb_sym r = mrb_intern_lit(p->mrb, "*");
mrb_sym b = mrb_intern_lit(p->mrb, "&");
mrb_sym r = MRB_OPSYM(mul);
mrb_sym b = MRB_OPSYM(and);
if (local_var_p(p, r) && local_var_p(p, b)) {
$$ = cons(list1(new_splat(p, new_lvar(p, r))),
new_block_arg(p, new_lvar(p, b)));
+2 -2
View File
@@ -1086,7 +1086,7 @@ mrb_ary_splat(mrb_state *mrb, mrb_value v)
return mrb_obj_value(a);
}
if (!mrb_respond_to(mrb, v, mrb_intern_lit(mrb, "to_a"))) {
if (!mrb_respond_to(mrb, v, MRB_SYM(to_a))) {
return mrb_ary_new_from_values(mrb, 1, &v);
}
@@ -1314,7 +1314,7 @@ init_ary_each(mrb_state *mrb, struct RClass *ary)
each_irep->syms = (mrb_sym*)mrb_malloc(mrb, sizeof(mrb_sym)*5);
each_irep->syms[0] = MRB_SYM(each);
each_irep->syms[1] = MRB_SYM(to_enum);
each_irep->syms[2] = mrb_intern_lit(mrb, "[]");
each_irep->syms[2] = MRB_OPSYM(aref);
each_irep->syms[3] = MRB_SYM(call);
each_irep->syms[4] = MRB_SYM(length);
each_irep->slen = 5;
+1 -1
View File
@@ -766,7 +766,7 @@ mrb_obj_ceqq(mrb_state *mrb, mrb_value self)
{
mrb_value v = mrb_get_arg1(mrb);
mrb_int i, len;
mrb_sym eqq = mrb_intern_lit(mrb, "===");
mrb_sym eqq = MRB_OPSYM(eqq);
mrb_value ary;
if (mrb_array_p(self)) {
+1 -1
View File
@@ -326,7 +326,7 @@ mrb_init_proc(mrb_state *mrb)
irep_obj->data = NULL;
MRB_METHOD_FROM_PROC(m, p);
mrb_define_method_raw(mrb, mrb->proc_class, MRB_SYM(call), m);
mrb_define_method_raw(mrb, mrb->proc_class, mrb_intern_lit(mrb, "[]"), m);
mrb_define_method_raw(mrb, mrb->proc_class, MRB_OPSYM(aref), m);
mrb_define_class_method(mrb, mrb->kernel_module, "lambda", proc_lambda, MRB_ARGS_NONE()|MRB_ARGS_BLOCK()); /* 15.3.1.2.6 */
mrb_define_method(mrb, mrb->kernel_module, "lambda", proc_lambda, MRB_ARGS_NONE()|MRB_ARGS_BLOCK()); /* 15.3.1.3.27 */
+12 -12
View File
@@ -2142,7 +2142,7 @@ RETRY_TRY_BLOCK:
OP_MATH_CASE_STRING_##op_name(); \
default: \
c = 1; \
mid = mrb_intern_lit(mrb, MRB_STRINGIZE(OP_MATH_OP_##op_name)); \
mid = MRB_OPSYM(op_name); \
goto L_SEND_SYM; \
} \
NEXT;
@@ -2229,7 +2229,7 @@ RETRY_TRY_BLOCK:
#endif
default:
c = 1;
mid = mrb_intern_lit(mrb, "/");
mid = MRB_OPSYM(div);
goto L_SEND_SYM;
}
@@ -2255,7 +2255,7 @@ RETRY_TRY_BLOCK:
default: \
SET_INT_VALUE(regs[a+1], b); \
c = 1; \
mid = mrb_intern_lit(mrb, MRB_STRINGIZE(OP_MATH_OP_##op_name)); \
mid = MRB_OPSYM(op_name); \
goto L_SEND_SYM; \
} \
NEXT;
@@ -2292,7 +2292,7 @@ RETRY_TRY_BLOCK:
#define OP_CMP_BODY(op,v1,v2) (v1(regs[a]) op v2(regs[a+1]))
#ifdef MRB_WITHOUT_FLOAT
#define OP_CMP(op) do {\
#define OP_CMP(op,sym) do {\
int result;\
/* need to check if - is overridden */\
switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {\
@@ -2301,7 +2301,7 @@ RETRY_TRY_BLOCK:
break;\
default:\
c = 1;\
mid = mrb_intern_lit(mrb, # op);\
mid = MRB_OPSYM(sym);\
goto L_SEND_SYM;\
}\
if (result) {\
@@ -2312,7 +2312,7 @@ RETRY_TRY_BLOCK:
}\
} while(0)
#else
#define OP_CMP(op) do {\
#define OP_CMP(op, sym) do {\
int result;\
/* need to check if - is overridden */\
switch (TYPES2(mrb_type(regs[a]),mrb_type(regs[a+1]))) {\
@@ -2330,7 +2330,7 @@ RETRY_TRY_BLOCK:
break;\
default:\
c = 1;\
mid = mrb_intern_lit(mrb, # op);\
mid = MRB_OPSYM(sym);\
goto L_SEND_SYM;\
}\
if (result) {\
@@ -2347,28 +2347,28 @@ RETRY_TRY_BLOCK:
SET_TRUE_VALUE(regs[a]);
}
else {
OP_CMP(==);
OP_CMP(==,eq);
}
NEXT;
}
CASE(OP_LT, B) {
OP_CMP(<);
OP_CMP(<,lt);
NEXT;
}
CASE(OP_LE, B) {
OP_CMP(<=);
OP_CMP(<=,le);
NEXT;
}
CASE(OP_GT, B) {
OP_CMP(>);
OP_CMP(>,gt);
NEXT;
}
CASE(OP_GE, B) {
OP_CMP(>=);
OP_CMP(>=,ge);
NEXT;
}