summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-compiler
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-01-06 17:06:07 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-01-06 17:06:07 +0900
commit74c9502bd45fd70926c86ce564c2d5d1df9a6dd0 (patch)
tree4dbf22f15e482bf082712286bcf0daa5e51aa41c /mrbgems/mruby-compiler
parent1341e53961b3e99ac67d803e5ead677e976d18c4 (diff)
parent456878ba06358a77d4ab9312fdc69bf780f8fdf4 (diff)
downloadmruby-74c9502bd45fd70926c86ce564c2d5d1df9a6dd0.tar.gz
mruby-74c9502bd45fd70926c86ce564c2d5d1df9a6dd0.zip
Merge branch 'improve-source-scanning-for-presym' of https://github.com/shuujii/mruby into shuujii-improve-source-scanning-for-presym
Diffstat (limited to 'mrbgems/mruby-compiler')
-rw-r--r--mrbgems/mruby-compiler/core/codegen.c26
-rw-r--r--mrbgems/mruby-compiler/core/parse.y154
-rw-r--r--mrbgems/mruby-compiler/core/y.tab.c154
-rw-r--r--mrbgems/mruby-compiler/mrbgem.rake6
4 files changed, 170 insertions, 170 deletions
diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c
index 4ac092176..00a33021f 100644
--- a/mrbgems/mruby-compiler/core/codegen.c
+++ b/mrbgems/mruby-compiler/core/codegen.c
@@ -819,7 +819,7 @@ for_body(codegen_scope *s, node *tree)
genop_2(s, OP_BLOCK, cursp(), s->irep->rlen-1);
push();pop(); /* space for a block */
pop();
- idx = new_sym(s, MRB_SYM(each));
+ idx = new_sym(s, MRB_SYM_2(s->mrb, each));
genop_3(s, OP_SENDB, cursp(), idx, 0);
}
@@ -1547,14 +1547,14 @@ codegen(codegen_scope *s, node *tree, 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(), new_sym(s, MRB_SYM(__case_eqq)), 1);
+ genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_SYM_2(s->mrb, __case_eqq)), 1);
}
else {
if (n4) {
codegen(s, n4->car, VAL);
}
else {
- genop_2(s, OP_GETCONST, cursp(), new_sym(s, MRB_SYM(StandardError)));
+ genop_2(s, OP_GETCONST, cursp(), new_sym(s, MRB_SYM_2(s->mrb, StandardError)));
push();
}
pop();
@@ -1668,7 +1668,7 @@ codegen(codegen_scope *s, node *tree, int val)
{
node *n = tree->car->cdr;
mrb_sym mid = nsym(n->cdr->car);
- mrb_sym mnil = MRB_SYM_Q(nil);
+ mrb_sym mnil = MRB_SYM_Q_2(s->mrb, nil);
if (mid == mnil && n->cdr->cdr->car == NULL) {
nil_p = TRUE;
codegen(s, n->car, VAL);
@@ -1804,10 +1804,10 @@ codegen(codegen_scope *s, node *tree, int val)
gen_move(s, cursp(), head, 0);
push(); push(); pop(); pop(); pop();
if (nint(n->car->car) == NODE_SPLAT) {
- genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_SYM(__case_eqq)), 1);
+ genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_SYM_2(s->mrb, __case_eqq)), 1);
}
else {
- genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_OPSYM(eqq)), 1);
+ genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_OPSYM_2(s->mrb, eqq)), 1);
}
}
else {
@@ -2333,7 +2333,7 @@ codegen(codegen_scope *s, node *tree, int val)
pop_n(n+1);
genop_2S(s, OP_BLKPUSH, cursp(), (ainfo<<4)|(lv & 0xf));
if (sendv) n = CALL_MAXARGS;
- genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_SYM(call)), n);
+ genop_3(s, OP_SEND, cursp(), new_sym(s, MRB_SYM_2(s->mrb, call)), n);
if (val) push();
}
break;
@@ -2582,7 +2582,7 @@ codegen(codegen_scope *s, node *tree, int val)
default:
if (val) {
- int sym = new_sym(s, MRB_OPSYM(minus));
+ int sym = new_sym(s, MRB_OPSYM_2(s->mrb, minus));
codegen(s, tree, VAL);
pop();
genop_3(s, OP_SEND, cursp(), sym, 0);
@@ -2655,7 +2655,7 @@ codegen(codegen_scope *s, node *tree, int val)
{
node *n;
int ai = mrb_gc_arena_save(s->mrb);
- int sym = new_sym(s, MRB_SYM(Kernel));
+ int sym = new_sym(s, MRB_SYM_2(s->mrb, Kernel));
genop_1(s, OP_LOADSELF, cursp());
push();
@@ -2674,7 +2674,7 @@ codegen(codegen_scope *s, node *tree, int val)
}
push(); /* for block */
pop_n(3);
- sym = new_sym(s, MRB_OPSYM(tick)); /* ` */
+ sym = new_sym(s, MRB_OPSYM_2(s->mrb, tick)); /* ` */
genop_3(s, OP_SEND, cursp(), sym, 1);
if (val) push();
mrb_gc_arena_restore(s->mrb, ai);
@@ -2694,7 +2694,7 @@ codegen(codegen_scope *s, node *tree, int val)
genop_bs(s, OP_STRING, cursp(), off);
push(); push();
pop_n(3);
- sym = new_sym(s, MRB_OPSYM(tick)); /* ` */
+ sym = new_sym(s, MRB_OPSYM_2(s->mrb, tick)); /* ` */
genop_3(s, OP_SEND, cursp(), sym, 1);
if (val) push();
mrb_gc_arena_restore(s->mrb, ai);
@@ -2735,7 +2735,7 @@ codegen(codegen_scope *s, node *tree, int val)
}
push(); /* space for a block */
pop_n(argc+2);
- sym = new_sym(s, MRB_SYM(compile));
+ sym = new_sym(s, MRB_SYM_2(s->mrb, compile));
genop_3(s, OP_SEND, cursp(), sym, argc);
mrb_gc_arena_restore(s->mrb, ai);
push();
@@ -2789,7 +2789,7 @@ codegen(codegen_scope *s, node *tree, int val)
}
push(); /* space for a block */
pop_n(argc+2);
- sym = new_sym(s, MRB_SYM(compile));
+ sym = new_sym(s, MRB_SYM_2(s->mrb, compile));
genop_3(s, OP_SEND, cursp(), sym, argc);
mrb_gc_arena_restore(s->mrb, ai);
push();
diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y
index a5f3f93de..0be251ef5 100644
--- a/mrbgems/mruby-compiler/core/parse.y
+++ b/mrbgems/mruby-compiler/core/parse.y
@@ -89,7 +89,7 @@ intern_gen(parser_state *p, const char *s, size_t len)
}
#define intern(s,len) intern_gen(p,(s),(len))
-#define intern_lit(s) mrb_intern_lit(p->mrb, s)
+#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
static void
cons_free_gen(parser_state *p, node *cons)
@@ -315,14 +315,14 @@ static void
local_add_blk(parser_state *p, mrb_sym blk)
{
/* allocate register for block */
- local_add_f(p, blk ? blk : MRB_OPSYM(and));
+ local_add_f(p, blk ? blk : intern_op(and));
}
static void
local_add_kw(parser_state *p, mrb_sym kwd)
{
/* allocate register for keywords hash */
- local_add_f(p, kwd ? kwd : MRB_OPSYM(pow));
+ local_add_f(p, kwd ? kwd : intern_op(pow));
}
static node*
@@ -960,13 +960,13 @@ new_op_asgn(parser_state *p, node *a, mrb_sym op, node *b)
static node*
new_imaginary(parser_state *p, node *imaginary)
{
- return new_call(p, new_const(p, MRB_SYM(Kernel)), MRB_SYM(Complex), list1(list2(list3((node*)NODE_INT, (node*)strdup("0"), nint(10)), imaginary)), 1);
+ return new_call(p, new_const(p, MRB_SYM_2(p->mrb, Kernel)), MRB_SYM_2(p->mrb, Complex), list1(list2(list3((node*)NODE_INT, (node*)strdup("0"), nint(10)), imaginary)), 1);
}
static node*
new_rational(parser_state *p, node *rational)
{
- return new_call(p, new_const(p, MRB_SYM(Kernel)), MRB_SYM(Rational), list1(list1(rational)), 1);
+ return new_call(p, new_const(p, MRB_SYM_2(p->mrb, Kernel)), MRB_SYM_2(p->mrb, Rational), list1(list1(rational)), 1);
}
/* (:int . i) */
@@ -1707,7 +1707,7 @@ command_asgn : lhs '=' command_rhs
}
| primary_value '[' opt_call_args ']' tOP_ASGN command_rhs
{
- $$ = new_op_asgn(p, new_call(p, $1, MRB_OPSYM(aref), $3, '.'), $5, $6);
+ $$ = new_op_asgn(p, new_call(p, $1, intern_op(aref), $3, '.'), $5, $6);
}
| primary_value call_op tIDENTIFIER tOP_ASGN command_rhs
{
@@ -1963,7 +1963,7 @@ mlhs_node : variable
}
| primary_value '[' opt_call_args ']'
{
- $$ = new_call(p, $1, MRB_OPSYM(aref), $3, '.');
+ $$ = new_call(p, $1, intern_op(aref), $3, '.');
}
| primary_value call_op tIDENTIFIER
{
@@ -2002,7 +2002,7 @@ lhs : variable
}
| primary_value '[' opt_call_args ']'
{
- $$ = new_call(p, $1, MRB_OPSYM(aref), $3, '.');
+ $$ = new_call(p, $1, intern_op(aref), $3, '.');
}
| primary_value call_op tIDENTIFIER
{
@@ -2090,36 +2090,36 @@ undef_list : fsym
}
;
-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); }
+op : '|' { $$ = intern_op(or); }
+ | '^' { $$ = intern_op(xor); }
+ | '&' { $$ = intern_op(and); }
+ | tCMP { $$ = intern_op(cmp); }
+ | tEQ { $$ = intern_op(eq); }
+ | tEQQ { $$ = intern_op(eqq); }
+ | tMATCH { $$ = intern_op(match); }
+ | tNMATCH { $$ = intern_op(nmatch); }
+ | '>' { $$ = intern_op(gt); }
+ | tGEQ { $$ = intern_op(ge); }
+ | '<' { $$ = intern_op(lt); }
+ | tLEQ { $$ = intern_op(le); }
+ | tNEQ { $$ = intern_op(neq); }
+ | tLSHFT { $$ = intern_op(lshift); }
+ | tRSHFT { $$ = intern_op(rshift); }
+ | '+' { $$ = intern_op(add); }
+ | '-' { $$ = intern_op(sub); }
+ | '*' { $$ = intern_op(mul); }
+ | tSTAR { $$ = intern_op(mul); }
+ | '/' { $$ = intern_op(div); }
+ | '%' { $$ = intern_op(mod); }
+ | tPOW { $$ = intern_op(pow); }
+ | tDSTAR { $$ = intern_op(pow); }
+ | '!' { $$ = intern_op(not); }
+ | '~' { $$ = intern_op(neg); }
+ | tUPLUS { $$ = intern_op(plus); }
+ | tUMINUS { $$ = intern_op(minus); }
+ | tAREF { $$ = intern_op(aref); }
+ | tASET { $$ = intern_op(aset); }
+ | '`' { $$ = intern_op(tick); }
;
reswords : keyword__LINE__ | keyword__FILE__ | keyword__ENCODING__
@@ -2146,7 +2146,7 @@ arg : lhs '=' arg_rhs
}
| primary_value '[' opt_call_args ']' tOP_ASGN arg_rhs
{
- $$ = new_op_asgn(p, new_call(p, $1, MRB_OPSYM(aref), $3, '.'), $5, $6);
+ $$ = new_op_asgn(p, new_call(p, $1, intern_op(aref), $3, '.'), $5, $6);
}
| primary_value call_op tIDENTIFIER tOP_ASGN arg_rhs
{
@@ -2401,14 +2401,14 @@ paren_args : '(' opt_call_args ')'
| '(' args comma tBDOT3 rparen
{
#if 1
- mrb_sym r = MRB_OPSYM(mul);
- mrb_sym b = MRB_OPSYM(and);
+ mrb_sym r = intern_op(mul);
+ mrb_sym b = intern_op(and);
$$ = cons(push($2, new_splat(p, new_lvar(p, r))),
new_block_arg(p, new_lvar(p, b)));
#else
- mrb_sym r = MRB_OPSYM(mul);
- mrb_sym k = MRB_OPSYM(pow);
- mrb_sym b = MRB_OPSYM(and);
+ mrb_sym r = intern_op(mul);
+ mrb_sym k = intern_op(pow);
+ mrb_sym b = intern_op(and);
$$ = cons(list2(push($2, new_splat(p, new_lvar(p, r))),
new_kw_hash(p, list1(cons(new_kw_rest_args(p, 0), new_lvar(p, k))))),
new_block_arg(p, new_lvar(p, b)));
@@ -2417,16 +2417,16 @@ paren_args : '(' opt_call_args ')'
| '(' tBDOT3 rparen
{
#if 1
- mrb_sym r = MRB_OPSYM(mul);
- mrb_sym b = MRB_OPSYM(and);
+ mrb_sym r = intern_op(mul);
+ mrb_sym b = intern_op(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)));
}
#else
- mrb_sym r = MRB_OPSYM(mul);
- mrb_sym k = MRB_OPSYM(pow);
- mrb_sym b = MRB_OPSYM(and);
+ mrb_sym r = intern_op(mul);
+ mrb_sym k = intern_op(pow);
+ mrb_sym b = intern_op(and);
if (local_var_p(p, r) && local_var_p(p, k) && local_var_p(p, b)) {
$$ = cons(list2(new_splat(p, new_lvar(p, r)),
new_kw_hash(p, list1(cons(new_kw_rest_args(p, 0), new_lvar(p, k))))),
@@ -3115,11 +3115,11 @@ method_call : operation paren_args
}
| primary_value call_op paren_args
{
- $$ = new_call(p, $1, MRB_SYM(call), $3, $2);
+ $$ = new_call(p, $1, MRB_SYM_2(p->mrb, call), $3, $2);
}
| primary_value tCOLON2 paren_args
{
- $$ = new_call(p, $1, MRB_SYM(call), $3, tCOLON2);
+ $$ = new_call(p, $1, MRB_SYM_2(p->mrb, call), $3, tCOLON2);
}
| keyword_super paren_args
{
@@ -3131,7 +3131,7 @@ method_call : operation paren_args
}
| primary_value '[' opt_call_args ']'
{
- $$ = new_call(p, $1, MRB_OPSYM(aref), $3, '.');
+ $$ = new_call(p, $1, intern_op(aref), $3, '.');
}
;
@@ -3514,15 +3514,15 @@ f_arglist_paren : '(' f_args rparen
{
#if 1
/* til real keyword args implemented */
- mrb_sym r = MRB_OPSYM(mul);
- mrb_sym b = MRB_OPSYM(and);
+ mrb_sym r = intern_op(mul);
+ mrb_sym b = intern_op(and);
local_add_f(p, r);
$$ = new_args(p, $2, 0, r, 0,
new_args_tail(p, 0, 0, b));
#else
- mrb_sym r = MRB_OPSYM(mul);
- mrb_sym k = MRB_OPSYM(pow);
- mrb_sym b = MRB_OPSYM(and);
+ mrb_sym r = intern_op(mul);
+ mrb_sym k = intern_op(pow);
+ mrb_sym b = intern_op(and);
local_add_f(p, r); local_add_f(p, k);
$$ = new_args(p, $2, 0, r, 0,
new_args_tail(p, 0, new_kw_rest_args(p, nsym(k)), b));
@@ -3532,15 +3532,15 @@ f_arglist_paren : '(' f_args rparen
{
#if 1
/* til real keyword args implemented */
- mrb_sym r = MRB_OPSYM(mul);
- mrb_sym b = MRB_OPSYM(and);
+ mrb_sym r = intern_op(mul);
+ mrb_sym b = intern_op(and);
local_add_f(p, r);
$$ = new_args(p, 0, 0, r, 0,
new_args_tail(p, 0, 0, b));
#else
- mrb_sym r = MRB_OPSYM(mul);
- mrb_sym k = MRB_OPSYM(pow);
- mrb_sym b = MRB_OPSYM(and);
+ mrb_sym r = intern_op(mul);
+ mrb_sym k = intern_op(pow);
+ mrb_sym b = intern_op(and);
local_add_f(p, r); local_add_f(p, k);
$$ = new_args(p, 0, 0, r, 0,
new_args_tail(p, 0, new_kw_rest_args(p, nsym(k)), b));
@@ -3706,7 +3706,7 @@ f_args : f_arg ',' f_optarg ',' f_rest_arg opt_args_tail
}
| /* none */
{
- local_add_f(p, MRB_OPSYM(and));
+ local_add_f(p, intern_op(and));
$$ = new_args(p, 0, 0, 0, 0, 0);
}
;
@@ -3830,7 +3830,7 @@ f_rest_arg : restarg_mark tIDENTIFIER
}
| restarg_mark
{
- local_add_f(p, MRB_OPSYM(mul));
+ local_add_f(p, intern_op(mul));
$$ = -1;
}
;
@@ -5215,7 +5215,7 @@ parser_yylex(parser_state *p)
case '*':
if ((c = nextc(p)) == '*') {
if ((c = nextc(p)) == '=') {
- pylval.id = MRB_OPSYM(pow);
+ pylval.id = intern_op(pow);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -5233,7 +5233,7 @@ parser_yylex(parser_state *p)
}
else {
if (c == '=') {
- pylval.id = MRB_OPSYM(mul);
+ pylval.id = intern_op(mul);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -5349,7 +5349,7 @@ parser_yylex(parser_state *p)
}
if (c == '<') {
if ((c = nextc(p)) == '=') {
- pylval.id = MRB_OPSYM(lshift);
+ pylval.id = intern_op(lshift);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -5371,7 +5371,7 @@ parser_yylex(parser_state *p)
}
if (c == '>') {
if ((c = nextc(p)) == '=') {
- pylval.id = MRB_OPSYM(rshift);
+ pylval.id = intern_op(rshift);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -5479,7 +5479,7 @@ parser_yylex(parser_state *p)
if ((c = nextc(p)) == '&') {
p->lstate = EXPR_BEG;
if ((c = nextc(p)) == '=') {
- pylval.id = MRB_OPSYM(andand);
+ pylval.id = intern_op(andand);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -5491,7 +5491,7 @@ parser_yylex(parser_state *p)
return tANDDOT;
}
else if (c == '=') {
- pylval.id = MRB_OPSYM(and);
+ pylval.id = intern_op(and);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -5518,7 +5518,7 @@ parser_yylex(parser_state *p)
if ((c = nextc(p)) == '|') {
p->lstate = EXPR_BEG;
if ((c = nextc(p)) == '=') {
- pylval.id = MRB_OPSYM(oror);
+ pylval.id = intern_op(oror);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -5526,7 +5526,7 @@ parser_yylex(parser_state *p)
return tOROP;
}
if (c == '=') {
- pylval.id = MRB_OPSYM(or);
+ pylval.id = intern_op(or);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -5550,7 +5550,7 @@ parser_yylex(parser_state *p)
return '+';
}
if (c == '=') {
- pylval.id = MRB_OPSYM(add);
+ pylval.id = intern_op(add);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -5578,7 +5578,7 @@ parser_yylex(parser_state *p)
return '-';
}
if (c == '=') {
- pylval.id = MRB_OPSYM(sub);
+ pylval.id = intern_op(sub);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -5901,7 +5901,7 @@ parser_yylex(parser_state *p)
return tREGEXP_BEG;
}
if ((c = nextc(p)) == '=') {
- pylval.id = MRB_OPSYM(div);
+ pylval.id = intern_op(div);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -5920,7 +5920,7 @@ parser_yylex(parser_state *p)
case '^':
if ((c = nextc(p)) == '=') {
- pylval.id = MRB_OPSYM(xor);
+ pylval.id = intern_op(xor);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -6098,7 +6098,7 @@ parser_yylex(parser_state *p)
}
}
if ((c = nextc(p)) == '=') {
- pylval.id = MRB_OPSYM(mod);
+ pylval.id = intern_op(mod);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
diff --git a/mrbgems/mruby-compiler/core/y.tab.c b/mrbgems/mruby-compiler/core/y.tab.c
index a16038eb2..0709bfa74 100644
--- a/mrbgems/mruby-compiler/core/y.tab.c
+++ b/mrbgems/mruby-compiler/core/y.tab.c
@@ -152,7 +152,7 @@ intern_gen(parser_state *p, const char *s, size_t len)
}
#define intern(s,len) intern_gen(p,(s),(len))
-#define intern_lit(s) mrb_intern_lit(p->mrb, s)
+#define intern_op(op) MRB_OPSYM_2(p->mrb, op)
static void
cons_free_gen(parser_state *p, node *cons)
@@ -378,14 +378,14 @@ static void
local_add_blk(parser_state *p, mrb_sym blk)
{
/* allocate register for block */
- local_add_f(p, blk ? blk : MRB_OPSYM(and));
+ local_add_f(p, blk ? blk : intern_op(and));
}
static void
local_add_kw(parser_state *p, mrb_sym kwd)
{
/* allocate register for keywords hash */
- local_add_f(p, kwd ? kwd : MRB_OPSYM(pow));
+ local_add_f(p, kwd ? kwd : intern_op(pow));
}
static node*
@@ -1023,13 +1023,13 @@ new_op_asgn(parser_state *p, node *a, mrb_sym op, node *b)
static node*
new_imaginary(parser_state *p, node *imaginary)
{
- return new_call(p, new_const(p, MRB_SYM(Kernel)), MRB_SYM(Complex), list1(list2(list3((node*)NODE_INT, (node*)strdup("0"), nint(10)), imaginary)), 1);
+ return new_call(p, new_const(p, MRB_SYM_2(p->mrb, Kernel)), MRB_SYM_2(p->mrb, Complex), list1(list2(list3((node*)NODE_INT, (node*)strdup("0"), nint(10)), imaginary)), 1);
}
static node*
new_rational(parser_state *p, node *rational)
{
- return new_call(p, new_const(p, MRB_SYM(Kernel)), MRB_SYM(Rational), list1(list1(rational)), 1);
+ return new_call(p, new_const(p, MRB_SYM_2(p->mrb, Kernel)), MRB_SYM_2(p->mrb, Rational), list1(list1(rational)), 1);
}
/* (:int . i) */
@@ -6148,7 +6148,7 @@ yyreduce:
case 36:
#line 1709 "mrbgems/mruby-compiler/core/parse.y"
{
- (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-5].nd), MRB_OPSYM(aref), (yyvsp[-3].nd), '.'), (yyvsp[-1].id), (yyvsp[0].nd));
+ (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-5].nd), intern_op(aref), (yyvsp[-3].nd), '.'), (yyvsp[-1].id), (yyvsp[0].nd));
}
#line 6154 "mrbgems/mruby-compiler/core/y.tab.c"
break;
@@ -6551,7 +6551,7 @@ yyreduce:
case 93:
#line 1965 "mrbgems/mruby-compiler/core/parse.y"
{
- (yyval.nd) = new_call(p, (yyvsp[-3].nd), MRB_OPSYM(aref), (yyvsp[-1].nd), '.');
+ (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.');
}
#line 6557 "mrbgems/mruby-compiler/core/y.tab.c"
break;
@@ -6620,7 +6620,7 @@ yyreduce:
case 101:
#line 2004 "mrbgems/mruby-compiler/core/parse.y"
{
- (yyval.nd) = new_call(p, (yyvsp[-3].nd), MRB_OPSYM(aref), (yyvsp[-1].nd), '.');
+ (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.');
}
#line 6626 "mrbgems/mruby-compiler/core/y.tab.c"
break;
@@ -6761,181 +6761,181 @@ yyreduce:
case 124:
#line 2093 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(or); }
+ { (yyval.id) = intern_op(or); }
#line 6766 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 125:
#line 2094 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(xor); }
+ { (yyval.id) = intern_op(xor); }
#line 6772 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 126:
#line 2095 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(and); }
+ { (yyval.id) = intern_op(and); }
#line 6778 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 127:
#line 2096 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(cmp); }
+ { (yyval.id) = intern_op(cmp); }
#line 6784 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 128:
#line 2097 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(eq); }
+ { (yyval.id) = intern_op(eq); }
#line 6790 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 129:
#line 2098 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(eqq); }
+ { (yyval.id) = intern_op(eqq); }
#line 6796 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 130:
#line 2099 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(match); }
+ { (yyval.id) = intern_op(match); }
#line 6802 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 131:
#line 2100 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(nmatch); }
+ { (yyval.id) = intern_op(nmatch); }
#line 6808 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 132:
#line 2101 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(gt); }
+ { (yyval.id) = intern_op(gt); }
#line 6814 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 133:
#line 2102 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(ge); }
+ { (yyval.id) = intern_op(ge); }
#line 6820 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 134:
#line 2103 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(lt); }
+ { (yyval.id) = intern_op(lt); }
#line 6826 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 135:
#line 2104 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(le); }
+ { (yyval.id) = intern_op(le); }
#line 6832 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 136:
#line 2105 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(neq); }
+ { (yyval.id) = intern_op(neq); }
#line 6838 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 137:
#line 2106 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(lshift); }
+ { (yyval.id) = intern_op(lshift); }
#line 6844 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 138:
#line 2107 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(rshift); }
+ { (yyval.id) = intern_op(rshift); }
#line 6850 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 139:
#line 2108 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(add); }
+ { (yyval.id) = intern_op(add); }
#line 6856 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 140:
#line 2109 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(sub); }
+ { (yyval.id) = intern_op(sub); }
#line 6862 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 141:
#line 2110 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(mul); }
+ { (yyval.id) = intern_op(mul); }
#line 6868 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 142:
#line 2111 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(mul); }
+ { (yyval.id) = intern_op(mul); }
#line 6874 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 143:
#line 2112 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(div); }
+ { (yyval.id) = intern_op(div); }
#line 6880 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 144:
#line 2113 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(mod); }
+ { (yyval.id) = intern_op(mod); }
#line 6886 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 145:
#line 2114 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(pow); }
+ { (yyval.id) = intern_op(pow); }
#line 6892 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 146:
#line 2115 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(pow); }
+ { (yyval.id) = intern_op(pow); }
#line 6898 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 147:
#line 2116 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(not); }
+ { (yyval.id) = intern_op(not); }
#line 6904 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 148:
#line 2117 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(neg); }
+ { (yyval.id) = intern_op(neg); }
#line 6910 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 149:
#line 2118 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(plus); }
+ { (yyval.id) = intern_op(plus); }
#line 6916 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 150:
#line 2119 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(minus); }
+ { (yyval.id) = intern_op(minus); }
#line 6922 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 151:
#line 2120 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(aref); }
+ { (yyval.id) = intern_op(aref); }
#line 6928 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 152:
#line 2121 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(aset); }
+ { (yyval.id) = intern_op(aset); }
#line 6934 "mrbgems/mruby-compiler/core/y.tab.c"
break;
case 153:
#line 2122 "mrbgems/mruby-compiler/core/parse.y"
- { (yyval.id) = MRB_OPSYM(tick); }
+ { (yyval.id) = intern_op(tick); }
#line 6940 "mrbgems/mruby-compiler/core/y.tab.c"
break;
@@ -6958,7 +6958,7 @@ yyreduce:
case 196:
#line 2148 "mrbgems/mruby-compiler/core/parse.y"
{
- (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-5].nd), MRB_OPSYM(aref), (yyvsp[-3].nd), '.'), (yyvsp[-1].id), (yyvsp[0].nd));
+ (yyval.nd) = new_op_asgn(p, new_call(p, (yyvsp[-5].nd), intern_op(aref), (yyvsp[-3].nd), '.'), (yyvsp[-1].id), (yyvsp[0].nd));
}
#line 6964 "mrbgems/mruby-compiler/core/y.tab.c"
break;
@@ -7426,14 +7426,14 @@ yyreduce:
#line 2402 "mrbgems/mruby-compiler/core/parse.y"
{
#if 1
- mrb_sym r = MRB_OPSYM(mul);
- mrb_sym b = MRB_OPSYM(and);
+ mrb_sym r = intern_op(mul);
+ mrb_sym b = intern_op(and);
(yyval.nd) = cons(push((yyvsp[-3].nd), new_splat(p, new_lvar(p, r))),
new_block_arg(p, new_lvar(p, b)));
#else
- mrb_sym r = MRB_OPSYM(mul);
- mrb_sym k = MRB_OPSYM(pow);
- mrb_sym b = MRB_OPSYM(and);
+ mrb_sym r = intern_op(mul);
+ mrb_sym k = intern_op(pow);
+ mrb_sym b = intern_op(and);
(yyval.nd) = cons(list2(push((yyvsp[-3].nd), new_splat(p, new_lvar(p, r))),
new_kw_hash(p, list1(cons(new_kw_rest_args(p, 0), new_lvar(p, k))))),
new_block_arg(p, new_lvar(p, b)));
@@ -7446,16 +7446,16 @@ yyreduce:
#line 2418 "mrbgems/mruby-compiler/core/parse.y"
{
#if 1
- mrb_sym r = MRB_OPSYM(mul);
- mrb_sym b = MRB_OPSYM(and);
+ mrb_sym r = intern_op(mul);
+ mrb_sym b = intern_op(and);
if (local_var_p(p, r) && local_var_p(p, b)) {
(yyval.nd) = cons(list1(new_splat(p, new_lvar(p, r))),
new_block_arg(p, new_lvar(p, b)));
}
#else
- mrb_sym r = MRB_OPSYM(mul);
- mrb_sym k = MRB_OPSYM(pow);
- mrb_sym b = MRB_OPSYM(and);
+ mrb_sym r = intern_op(mul);
+ mrb_sym k = intern_op(pow);
+ mrb_sym b = intern_op(and);
if (local_var_p(p, r) && local_var_p(p, k) && local_var_p(p, b)) {
(yyval.nd) = cons(list2(new_splat(p, new_lvar(p, r)),
new_kw_hash(p, list1(cons(new_kw_rest_args(p, 0), new_lvar(p, k))))),
@@ -8555,7 +8555,7 @@ yyreduce:
case 406:
#line 3117 "mrbgems/mruby-compiler/core/parse.y"
{
- (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM(call), (yyvsp[0].nd), (yyvsp[-1].num));
+ (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), (yyvsp[-1].num));
}
#line 8561 "mrbgems/mruby-compiler/core/y.tab.c"
break;
@@ -8563,7 +8563,7 @@ yyreduce:
case 407:
#line 3121 "mrbgems/mruby-compiler/core/parse.y"
{
- (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM(call), (yyvsp[0].nd), tCOLON2);
+ (yyval.nd) = new_call(p, (yyvsp[-2].nd), MRB_SYM_2(p->mrb, call), (yyvsp[0].nd), tCOLON2);
}
#line 8569 "mrbgems/mruby-compiler/core/y.tab.c"
break;
@@ -8587,7 +8587,7 @@ yyreduce:
case 410:
#line 3133 "mrbgems/mruby-compiler/core/parse.y"
{
- (yyval.nd) = new_call(p, (yyvsp[-3].nd), MRB_OPSYM(aref), (yyvsp[-1].nd), '.');
+ (yyval.nd) = new_call(p, (yyvsp[-3].nd), intern_op(aref), (yyvsp[-1].nd), '.');
}
#line 8593 "mrbgems/mruby-compiler/core/y.tab.c"
break;
@@ -9103,15 +9103,15 @@ yyreduce:
{
#if 1
/* til real keyword args implemented */
- mrb_sym r = MRB_OPSYM(mul);
- mrb_sym b = MRB_OPSYM(and);
+ mrb_sym r = intern_op(mul);
+ mrb_sym b = intern_op(and);
local_add_f(p, r);
(yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, r, 0,
new_args_tail(p, 0, 0, b));
#else
- mrb_sym r = MRB_OPSYM(mul);
- mrb_sym k = MRB_OPSYM(pow);
- mrb_sym b = MRB_OPSYM(and);
+ mrb_sym r = intern_op(mul);
+ mrb_sym k = intern_op(pow);
+ mrb_sym b = intern_op(and);
local_add_f(p, r); local_add_f(p, k);
(yyval.nd) = new_args(p, (yyvsp[-3].nd), 0, r, 0,
new_args_tail(p, 0, new_kw_rest_args(p, nsym(k)), b));
@@ -9125,15 +9125,15 @@ yyreduce:
{
#if 1
/* til real keyword args implemented */
- mrb_sym r = MRB_OPSYM(mul);
- mrb_sym b = MRB_OPSYM(and);
+ mrb_sym r = intern_op(mul);
+ mrb_sym b = intern_op(and);
local_add_f(p, r);
(yyval.nd) = new_args(p, 0, 0, r, 0,
new_args_tail(p, 0, 0, b));
#else
- mrb_sym r = MRB_OPSYM(mul);
- mrb_sym k = MRB_OPSYM(pow);
- mrb_sym b = MRB_OPSYM(and);
+ mrb_sym r = intern_op(mul);
+ mrb_sym k = intern_op(pow);
+ mrb_sym b = intern_op(and);
local_add_f(p, r); local_add_f(p, k);
(yyval.nd) = new_args(p, 0, 0, r, 0,
new_args_tail(p, 0, new_kw_rest_args(p, nsym(k)), b));
@@ -9406,7 +9406,7 @@ yyreduce:
case 533:
#line 3708 "mrbgems/mruby-compiler/core/parse.y"
{
- local_add_f(p, MRB_OPSYM(and));
+ local_add_f(p, intern_op(and));
(yyval.nd) = new_args(p, 0, 0, 0, 0, 0);
}
#line 9413 "mrbgems/mruby-compiler/core/y.tab.c"
@@ -9590,7 +9590,7 @@ yyreduce:
case 556:
#line 3832 "mrbgems/mruby-compiler/core/parse.y"
{
- local_add_f(p, MRB_OPSYM(mul));
+ local_add_f(p, intern_op(mul));
(yyval.id) = -1;
}
#line 9597 "mrbgems/mruby-compiler/core/y.tab.c"
@@ -11216,7 +11216,7 @@ parser_yylex(parser_state *p)
case '*':
if ((c = nextc(p)) == '*') {
if ((c = nextc(p)) == '=') {
- pylval.id = MRB_OPSYM(pow);
+ pylval.id = intern_op(pow);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -11234,7 +11234,7 @@ parser_yylex(parser_state *p)
}
else {
if (c == '=') {
- pylval.id = MRB_OPSYM(mul);
+ pylval.id = intern_op(mul);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -11350,7 +11350,7 @@ parser_yylex(parser_state *p)
}
if (c == '<') {
if ((c = nextc(p)) == '=') {
- pylval.id = MRB_OPSYM(lshift);
+ pylval.id = intern_op(lshift);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -11372,7 +11372,7 @@ parser_yylex(parser_state *p)
}
if (c == '>') {
if ((c = nextc(p)) == '=') {
- pylval.id = MRB_OPSYM(rshift);
+ pylval.id = intern_op(rshift);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -11480,7 +11480,7 @@ parser_yylex(parser_state *p)
if ((c = nextc(p)) == '&') {
p->lstate = EXPR_BEG;
if ((c = nextc(p)) == '=') {
- pylval.id = MRB_OPSYM(andand);
+ pylval.id = intern_op(andand);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -11492,7 +11492,7 @@ parser_yylex(parser_state *p)
return tANDDOT;
}
else if (c == '=') {
- pylval.id = MRB_OPSYM(and);
+ pylval.id = intern_op(and);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -11519,7 +11519,7 @@ parser_yylex(parser_state *p)
if ((c = nextc(p)) == '|') {
p->lstate = EXPR_BEG;
if ((c = nextc(p)) == '=') {
- pylval.id = MRB_OPSYM(oror);
+ pylval.id = intern_op(oror);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -11527,7 +11527,7 @@ parser_yylex(parser_state *p)
return tOROP;
}
if (c == '=') {
- pylval.id = MRB_OPSYM(or);
+ pylval.id = intern_op(or);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -11551,7 +11551,7 @@ parser_yylex(parser_state *p)
return '+';
}
if (c == '=') {
- pylval.id = MRB_OPSYM(add);
+ pylval.id = intern_op(add);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -11579,7 +11579,7 @@ parser_yylex(parser_state *p)
return '-';
}
if (c == '=') {
- pylval.id = MRB_OPSYM(sub);
+ pylval.id = intern_op(sub);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -11902,7 +11902,7 @@ parser_yylex(parser_state *p)
return tREGEXP_BEG;
}
if ((c = nextc(p)) == '=') {
- pylval.id = MRB_OPSYM(div);
+ pylval.id = intern_op(div);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -11921,7 +11921,7 @@ parser_yylex(parser_state *p)
case '^':
if ((c = nextc(p)) == '=') {
- pylval.id = MRB_OPSYM(xor);
+ pylval.id = intern_op(xor);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
@@ -12099,7 +12099,7 @@ parser_yylex(parser_state *p)
}
}
if ((c = nextc(p)) == '=') {
- pylval.id = MRB_OPSYM(mod);
+ pylval.id = intern_op(mod);
p->lstate = EXPR_BEG;
return tOP_ASGN;
}
diff --git a/mrbgems/mruby-compiler/mrbgem.rake b/mrbgems/mruby-compiler/mrbgem.rake
index 70f9e19d8..da910537a 100644
--- a/mrbgems/mruby-compiler/mrbgem.rake
+++ b/mrbgems/mruby-compiler/mrbgem.rake
@@ -5,13 +5,13 @@ MRuby::Gem::Specification.new 'mruby-compiler' do |spec|
as_cxx_srcs = %w[codegen y.tab].map{|name| "#{dir}/core/#{name}.c"}
objs = Dir.glob("#{dir}/core/*.c").map do |src|
- dst = src.pathmap("#{build_dir}/core/%n")
if build.cxx_exception_enabled? && as_cxx_srcs.include?(src)
- build.compile_as_cxx(src, "#{dst}.cxx")
+ build.compile_as_cxx(src)
else
- objfile(dst)
+ objfile(src.pathmap("#{build_dir}/core/%n"))
end
end
+ objs << objfile("#{build_dir}/core/y.tab")
build.libmruby_core_objs << objs
lex_def = "#{dir}/core/lex.def"