mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
mrb_sym can be short integer; reduced 10KB
This commit is contained in:
+1
-2
@@ -62,11 +62,10 @@ typedef double mrb_float;
|
||||
|
||||
#ifdef MRB_NAN_BOXING
|
||||
typedef int32_t mrb_int;
|
||||
typedef int32_t mrb_sym;
|
||||
#else
|
||||
typedef int mrb_int;
|
||||
typedef intptr_t mrb_sym;
|
||||
#endif
|
||||
typedef short mrb_sym;
|
||||
|
||||
/* define ENABLE_XXXX from DISABLE_XXX */
|
||||
#ifndef DISABLE_REGEXP
|
||||
|
||||
+29
-28
@@ -466,7 +466,8 @@ node_len(node *tree)
|
||||
return n;
|
||||
}
|
||||
|
||||
#define lv_name(lv) ((mrb_sym)(lv)->car)
|
||||
#define sym(x) ((mrb_sym)(intptr_t)(x))
|
||||
#define lv_name(lv) sym((lv)->car)
|
||||
static int
|
||||
lv_idx(codegen_scope *s, mrb_sym id)
|
||||
{
|
||||
@@ -582,7 +583,7 @@ lambda_body(codegen_scope *s, node *tree, int blk)
|
||||
|
||||
dispatch(s, pos+i);
|
||||
codegen(s, opt->car->cdr, VAL);
|
||||
idx = lv_idx(s, (mrb_sym)opt->car->car);
|
||||
idx = lv_idx(s, (mrb_sym)(intptr_t)opt->car->car);
|
||||
pop();
|
||||
genop_peep(s, MKOP_AB(OP_MOVE, idx, cursp()), NOVAL);
|
||||
i++;
|
||||
@@ -706,7 +707,7 @@ gen_values(codegen_scope *s, node *t)
|
||||
static void
|
||||
gen_call(codegen_scope *s, node *tree, mrb_sym name, int sp, int val)
|
||||
{
|
||||
mrb_sym sym = name ? name : (mrb_sym)tree->cdr->car;
|
||||
mrb_sym sym = name ? name : sym(tree->cdr->car);
|
||||
int idx;
|
||||
int n = 0, noop = 0, sendv = 0, blk = 0;
|
||||
|
||||
@@ -796,11 +797,11 @@ gen_assignment(codegen_scope *s, node *node, int sp, int val)
|
||||
node = node->cdr;
|
||||
switch ((intptr_t)type) {
|
||||
case NODE_GVAR:
|
||||
idx = new_sym(s, (mrb_sym)node);
|
||||
idx = new_sym(s, sym(node));
|
||||
genop_peep(s, MKOP_ABx(OP_SETGLOBAL, sp, idx), val);
|
||||
break;
|
||||
case NODE_LVAR:
|
||||
idx = lv_idx(s, (mrb_sym)node);
|
||||
idx = lv_idx(s, sym(node));
|
||||
if (idx > 0) {
|
||||
if (idx != sp) {
|
||||
genop_peep(s, MKOP_AB(OP_MOVE, idx, sp), val);
|
||||
@@ -812,7 +813,7 @@ gen_assignment(codegen_scope *s, node *node, int sp, int val)
|
||||
codegen_scope *up = s->prev;
|
||||
|
||||
while (up) {
|
||||
idx = lv_idx(up, (mrb_sym)node);
|
||||
idx = lv_idx(up, sym(node));
|
||||
if (idx > 0) {
|
||||
genop_peep(s, MKOP_ABC(OP_SETUPVAR, sp, idx, lv), val);
|
||||
break;
|
||||
@@ -824,19 +825,19 @@ gen_assignment(codegen_scope *s, node *node, int sp, int val)
|
||||
}
|
||||
break;
|
||||
case NODE_IVAR:
|
||||
idx = new_sym(s, (mrb_sym)node);
|
||||
idx = new_sym(s, sym(node));
|
||||
genop_peep(s, MKOP_ABx(OP_SETIV, sp, idx), val);
|
||||
break;
|
||||
case NODE_CVAR:
|
||||
idx = new_sym(s, (mrb_sym)node);
|
||||
idx = new_sym(s, sym(node));
|
||||
genop_peep(s, MKOP_ABx(OP_SETCV, sp, idx), val);
|
||||
break;
|
||||
case NODE_CONST:
|
||||
idx = new_sym(s, (mrb_sym)node);
|
||||
idx = new_sym(s, sym(node));
|
||||
genop_peep(s, MKOP_ABx(OP_SETCONST, sp, idx), val);
|
||||
break;
|
||||
case NODE_COLON2:
|
||||
idx = new_sym(s, (mrb_sym)node->cdr);
|
||||
idx = new_sym(s, sym(node->cdr));
|
||||
genop_peep(s, MKOP_AB(OP_MOVE, cursp(), sp), NOVAL);
|
||||
push();
|
||||
codegen(s, node->car, VAL);
|
||||
@@ -846,7 +847,7 @@ gen_assignment(codegen_scope *s, node *node, int sp, int val)
|
||||
|
||||
case NODE_CALL:
|
||||
push();
|
||||
gen_call(s, node, attrsym(s, (mrb_sym)node->cdr->car), sp, val);
|
||||
gen_call(s, node, attrsym(s, sym(node->cdr->car)), sp, val);
|
||||
val = NOVAL; /* push should have done in gen_call() */
|
||||
break;
|
||||
|
||||
@@ -1247,7 +1248,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
|
||||
case NODE_COLON2:
|
||||
{
|
||||
int sym = new_sym(s, (mrb_sym)tree->cdr);
|
||||
int sym = new_sym(s, sym(tree->cdr));
|
||||
|
||||
codegen(s, tree->car, VAL);
|
||||
pop();
|
||||
@@ -1258,7 +1259,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
|
||||
case NODE_COLON3:
|
||||
{
|
||||
int sym = new_sym(s, (mrb_sym)tree);
|
||||
int sym = new_sym(s, sym(tree));
|
||||
|
||||
genop(s, MKOP_A(OP_OCLASS, cursp()));
|
||||
genop(s, MKOP_ABx(OP_GETMCNST, cursp(), sym));
|
||||
@@ -1378,7 +1379,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
|
||||
case NODE_OP_ASGN:
|
||||
{
|
||||
mrb_sym sym = (mrb_sym)tree->cdr->car;
|
||||
mrb_sym sym = sym(tree->cdr->car);
|
||||
int len;
|
||||
const char *name = mrb_sym2name_len(s->mrb, sym, &len);
|
||||
int idx;
|
||||
@@ -1592,7 +1593,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
|
||||
case NODE_LVAR:
|
||||
if (val) {
|
||||
int idx = lv_idx(s, (mrb_sym)tree);
|
||||
int idx = lv_idx(s, sym(tree));
|
||||
|
||||
if (idx > 0) {
|
||||
genop(s, MKOP_AB(OP_MOVE, cursp(), idx));
|
||||
@@ -1602,7 +1603,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
codegen_scope *up = s->prev;
|
||||
|
||||
while (up) {
|
||||
idx = lv_idx(up, (mrb_sym)tree);
|
||||
idx = lv_idx(up, sym(tree));
|
||||
if (idx > 0) {
|
||||
genop(s, MKOP_ABC(OP_GETUPVAR, cursp(), idx, lv));
|
||||
break;
|
||||
@@ -1617,7 +1618,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
|
||||
case NODE_GVAR:
|
||||
{
|
||||
int sym = new_sym(s, (mrb_sym)tree);
|
||||
int sym = new_sym(s, sym(tree));
|
||||
|
||||
genop(s, MKOP_ABx(OP_GETGLOBAL, cursp(), sym));
|
||||
push();
|
||||
@@ -1626,7 +1627,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
|
||||
case NODE_IVAR:
|
||||
{
|
||||
int sym = new_sym(s, (mrb_sym)tree);
|
||||
int sym = new_sym(s, sym(tree));
|
||||
|
||||
genop(s, MKOP_ABx(OP_GETIV, cursp(), sym));
|
||||
push();
|
||||
@@ -1635,7 +1636,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
|
||||
case NODE_CVAR:
|
||||
{
|
||||
int sym = new_sym(s, (mrb_sym)tree);
|
||||
int sym = new_sym(s, sym(tree));
|
||||
|
||||
genop(s, MKOP_ABx(OP_GETCV, cursp(), sym));
|
||||
push();
|
||||
@@ -1644,7 +1645,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
|
||||
case NODE_CONST:
|
||||
{
|
||||
int sym = new_sym(s, (mrb_sym)tree);
|
||||
int sym = new_sym(s, sym(tree));
|
||||
|
||||
genop(s, MKOP_ABx(OP_GETCONST, cursp(), sym));
|
||||
push();
|
||||
@@ -1828,7 +1829,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
|
||||
case NODE_SYM:
|
||||
if (val) {
|
||||
int sym = new_sym(s, (mrb_sym)tree);
|
||||
int sym = new_sym(s, sym(tree));
|
||||
|
||||
genop(s, MKOP_ABx(OP_LOADSYM, cursp(), sym));
|
||||
push();
|
||||
@@ -1874,8 +1875,8 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
|
||||
case NODE_ALIAS:
|
||||
{
|
||||
int a = new_msym(s, (mrb_sym)tree->car);
|
||||
int b = new_msym(s, (mrb_sym)tree->cdr);
|
||||
int a = new_msym(s, sym(tree->car));
|
||||
int b = new_msym(s, sym(tree->cdr));
|
||||
int c = new_msym(s, mrb_intern(s->mrb, "alias_method"));
|
||||
|
||||
genop(s, MKOP_A(OP_TCLASS, cursp()));
|
||||
@@ -1895,7 +1896,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
|
||||
case NODE_UNDEF:
|
||||
{
|
||||
int sym = new_msym(s, (mrb_sym)tree);
|
||||
int sym = new_msym(s, sym(tree));
|
||||
int undef = new_msym(s, mrb_intern(s->mrb, "undef_method"));
|
||||
|
||||
genop(s, MKOP_A(OP_TCLASS, cursp()));
|
||||
@@ -1934,7 +1935,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
push();
|
||||
}
|
||||
pop(); pop();
|
||||
idx = new_msym(s, (mrb_sym)tree->car->cdr);
|
||||
idx = new_msym(s, sym(tree->car->cdr));
|
||||
genop(s, MKOP_AB(OP_CLASS, cursp(), idx));
|
||||
idx = scope_body(s, tree->cdr->cdr->car);
|
||||
genop(s, MKOP_ABx(OP_EXEC, cursp(), idx));
|
||||
@@ -1960,7 +1961,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
codegen(s, tree->car->car, VAL);
|
||||
}
|
||||
pop();
|
||||
idx = new_msym(s, (mrb_sym)tree->car->cdr);
|
||||
idx = new_msym(s, sym(tree->car->cdr));
|
||||
genop(s, MKOP_AB(OP_MODULE, cursp(), idx));
|
||||
idx = scope_body(s, tree->cdr->car);
|
||||
genop(s, MKOP_ABx(OP_EXEC, cursp(), idx));
|
||||
@@ -1987,7 +1988,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
|
||||
case NODE_DEF:
|
||||
{
|
||||
int sym = new_msym(s, (mrb_sym)tree->car);
|
||||
int sym = new_msym(s, sym(tree->car));
|
||||
int idx = lambda_body(s, tree->cdr, 0);
|
||||
|
||||
genop(s, MKOP_A(OP_TCLASS, cursp()));
|
||||
@@ -2004,7 +2005,7 @@ codegen(codegen_scope *s, node *tree, int val)
|
||||
case NODE_SDEF:
|
||||
{
|
||||
node *recv = tree->car;
|
||||
int sym = new_msym(s, (mrb_sym)tree->cdr->car);
|
||||
int sym = new_msym(s, sym(tree->cdr->car));
|
||||
int idx = lambda_body(s, tree->cdr->cdr, 0);
|
||||
|
||||
codegen(s, recv, VAL);
|
||||
|
||||
+65
-62
@@ -58,6 +58,9 @@ typedef unsigned int stack_type;
|
||||
#define CMDARG_LEXPOP() BITSTACK_LEXPOP(p->cmdarg_stack)
|
||||
#define CMDARG_P() BITSTACK_SET_P(p->cmdarg_stack)
|
||||
|
||||
#define sym(x) ((mrb_sym)(intptr_t)(x))
|
||||
#define nsym(x) ((node*)(intptr_t)(x))
|
||||
|
||||
static mrb_sym
|
||||
intern_gen(parser_state *p, const char *s)
|
||||
{
|
||||
@@ -219,7 +222,7 @@ local_var_p(parser_state *p, mrb_sym sym)
|
||||
while (l) {
|
||||
node *n = l->car;
|
||||
while (n) {
|
||||
if ((mrb_sym)n->car == sym) return 1;
|
||||
if (sym(n->car) == sym) return 1;
|
||||
n = n->cdr;
|
||||
}
|
||||
l = l->cdr;
|
||||
@@ -230,7 +233,7 @@ local_var_p(parser_state *p, mrb_sym sym)
|
||||
static void
|
||||
local_add_f(parser_state *p, mrb_sym sym)
|
||||
{
|
||||
p->locals->car = push(p->locals->car, (node*)sym);
|
||||
p->locals->car = push(p->locals->car, nsym(sym));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -298,7 +301,7 @@ new_false(parser_state *p)
|
||||
static node*
|
||||
new_alias(parser_state *p, mrb_sym a, mrb_sym b)
|
||||
{
|
||||
return cons((node*)NODE_ALIAS, cons((node*)a, (node*)b));
|
||||
return cons((node*)NODE_ALIAS, cons(nsym(a), nsym(b)));
|
||||
}
|
||||
|
||||
// (:if cond then else)
|
||||
@@ -368,14 +371,14 @@ new_self(parser_state *p)
|
||||
static node*
|
||||
new_call(parser_state *p, node *a, mrb_sym b, node *c)
|
||||
{
|
||||
return list4((node*)NODE_CALL, a, (node*)b, c);
|
||||
return list4((node*)NODE_CALL, a, nsym(b), c);
|
||||
}
|
||||
|
||||
// (:fcall self mid args)
|
||||
static node*
|
||||
new_fcall(parser_state *p, mrb_sym b, node *c)
|
||||
{
|
||||
return list4((node*)NODE_FCALL, new_self(p), (node*)b, c);
|
||||
return list4((node*)NODE_FCALL, new_self(p), nsym(b), c);
|
||||
}
|
||||
|
||||
#if 0
|
||||
@@ -467,14 +470,14 @@ new_dot3(parser_state *p, node *a, node *b)
|
||||
static node*
|
||||
new_colon2(parser_state *p, node *b, mrb_sym c)
|
||||
{
|
||||
return cons((node*)NODE_COLON2, cons(b, (node*)c));
|
||||
return cons((node*)NODE_COLON2, cons(b, nsym(c)));
|
||||
}
|
||||
|
||||
// (:colon3 . c)
|
||||
static node*
|
||||
new_colon3(parser_state *p, mrb_sym c)
|
||||
{
|
||||
return cons((node*)NODE_COLON3, (node*)c);
|
||||
return cons((node*)NODE_COLON3, nsym(c));
|
||||
}
|
||||
|
||||
// (:and a b)
|
||||
@@ -516,7 +519,7 @@ new_hash(parser_state *p, node *a)
|
||||
static node*
|
||||
new_sym(parser_state *p, mrb_sym sym)
|
||||
{
|
||||
return cons((node*)NODE_SYM, (node*)sym);
|
||||
return cons((node*)NODE_SYM, nsym(sym));
|
||||
}
|
||||
|
||||
static mrb_sym
|
||||
@@ -532,42 +535,42 @@ new_strsym(parser_state *p, node* str)
|
||||
static node*
|
||||
new_lvar(parser_state *p, mrb_sym sym)
|
||||
{
|
||||
return cons((node*)NODE_LVAR, (node*)sym);
|
||||
return cons((node*)NODE_LVAR, nsym(sym));
|
||||
}
|
||||
|
||||
// (:gvar . a)
|
||||
static node*
|
||||
new_gvar(parser_state *p, mrb_sym sym)
|
||||
{
|
||||
return cons((node*)NODE_GVAR, (node*)sym);
|
||||
return cons((node*)NODE_GVAR, nsym(sym));
|
||||
}
|
||||
|
||||
// (:ivar . a)
|
||||
static node*
|
||||
new_ivar(parser_state *p, mrb_sym sym)
|
||||
{
|
||||
return cons((node*)NODE_IVAR, (node*)sym);
|
||||
return cons((node*)NODE_IVAR, nsym(sym));
|
||||
}
|
||||
|
||||
// (:cvar . a)
|
||||
static node*
|
||||
new_cvar(parser_state *p, mrb_sym sym)
|
||||
{
|
||||
return cons((node*)NODE_CVAR, (node*)sym);
|
||||
return cons((node*)NODE_CVAR, nsym(sym));
|
||||
}
|
||||
|
||||
// (:const . a)
|
||||
static node*
|
||||
new_const(parser_state *p, mrb_sym sym)
|
||||
{
|
||||
return cons((node*)NODE_CONST, (node*)sym);
|
||||
return cons((node*)NODE_CONST, nsym(sym));
|
||||
}
|
||||
|
||||
// (:undef a...)
|
||||
static node*
|
||||
new_undef(parser_state *p, mrb_sym sym)
|
||||
{
|
||||
return cons((node*)NODE_UNDEF, (node*)sym);
|
||||
return cons((node*)NODE_UNDEF, nsym(sym));
|
||||
}
|
||||
|
||||
// (:class class super body)
|
||||
@@ -595,21 +598,21 @@ new_module(parser_state *p, node *m, node *b)
|
||||
static node*
|
||||
new_def(parser_state *p, mrb_sym m, node *a, node *b)
|
||||
{
|
||||
return list5((node*)NODE_DEF, (node*)m, p->locals->car, a, b);
|
||||
return list5((node*)NODE_DEF, nsym(m), p->locals->car, a, b);
|
||||
}
|
||||
|
||||
// (:sdef obj m lv (arg . body))
|
||||
static node*
|
||||
new_sdef(parser_state *p, node *o, mrb_sym m, node *a, node *b)
|
||||
{
|
||||
return list6((node*)NODE_SDEF, o, (node*)m, p->locals->car, a, b);
|
||||
return list6((node*)NODE_SDEF, o, nsym(m), p->locals->car, a, b);
|
||||
}
|
||||
|
||||
// (:arg . sym)
|
||||
static node*
|
||||
new_arg(parser_state *p, mrb_sym sym)
|
||||
{
|
||||
return cons((node*)NODE_ARG, (node*)sym);
|
||||
return cons((node*)NODE_ARG, nsym(sym));
|
||||
}
|
||||
|
||||
// (m o r m2 b)
|
||||
@@ -623,8 +626,8 @@ new_args(parser_state *p, node *m, node *opt, mrb_sym rest, node *m2, mrb_sym bl
|
||||
{
|
||||
node *n;
|
||||
|
||||
n = cons(m2, (node*)blk);
|
||||
n = cons((node*)rest, n);
|
||||
n = cons(m2, nsym(blk));
|
||||
n = cons(nsym(rest), n);
|
||||
n = cons(opt, n);
|
||||
return cons(m, n);
|
||||
}
|
||||
@@ -668,7 +671,7 @@ new_masgn(parser_state *p, node *a, node *b)
|
||||
static node*
|
||||
new_op_asgn(parser_state *p, node *a, mrb_sym op, node *b)
|
||||
{
|
||||
return list4((node*)NODE_OP_ASGN, a, (node*)op, b);
|
||||
return list4((node*)NODE_OP_ASGN, a, nsym(op), b);
|
||||
}
|
||||
|
||||
// (:int . i)
|
||||
@@ -807,7 +810,7 @@ static void
|
||||
assignable(parser_state *p, node *lhs)
|
||||
{
|
||||
if ((int)(intptr_t)lhs->car == NODE_LVAR) {
|
||||
local_add(p, (mrb_sym)lhs->cdr);
|
||||
local_add(p, sym(lhs->cdr));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -817,8 +820,8 @@ var_reference(parser_state *p, node *lhs)
|
||||
node *n;
|
||||
|
||||
if ((int)(intptr_t)lhs->car == NODE_LVAR) {
|
||||
if (!local_var_p(p, (mrb_sym)lhs->cdr)) {
|
||||
n = new_fcall(p, (mrb_sym)lhs->cdr, 0);
|
||||
if (!local_var_p(p, sym(lhs->cdr))) {
|
||||
n = new_fcall(p, sym(lhs->cdr), 0);
|
||||
cons_free(lhs);
|
||||
return n;
|
||||
}
|
||||
@@ -1451,15 +1454,15 @@ cname : tIDENTIFIER
|
||||
|
||||
cpath : tCOLON3 cname
|
||||
{
|
||||
$$ = cons((node*)1, (node*)$2);
|
||||
$$ = cons((node*)1, nsym($2));
|
||||
}
|
||||
| cname
|
||||
{
|
||||
$$ = cons((node*)0, (node*)$1);
|
||||
$$ = cons((node*)0, nsym($1));
|
||||
}
|
||||
| primary_value tCOLON2 cname
|
||||
{
|
||||
$$ = cons($1, (node*)$3);
|
||||
$$ = cons($1, nsym($3));
|
||||
}
|
||||
;
|
||||
|
||||
@@ -2768,14 +2771,14 @@ f_arg : f_arg_item
|
||||
f_opt : tIDENTIFIER '=' arg_value
|
||||
{
|
||||
local_add_f(p, $1);
|
||||
$$ = cons((node*)$1, $3);
|
||||
$$ = cons(nsym($1), $3);
|
||||
}
|
||||
;
|
||||
|
||||
f_block_opt : tIDENTIFIER '=' primary_value
|
||||
{
|
||||
local_add_f(p, $1);
|
||||
$$ = cons((node*)$1, $3);
|
||||
$$ = cons(nsym($1), $3);
|
||||
}
|
||||
;
|
||||
|
||||
@@ -4706,7 +4709,7 @@ parser_update_cxt(parser_state *p, mrbc_context *cxt)
|
||||
cxt->syms = (mrb_sym *)mrb_realloc(p->mrb, cxt->syms, i*sizeof(mrb_sym));
|
||||
cxt->slen = i;
|
||||
for (i=0, n=n0; n; i++,n=n->cdr) {
|
||||
cxt->syms[i] = (mrb_sym)n->car;
|
||||
cxt->syms[i] = sym(n->car);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5034,7 +5037,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
|
||||
while (n2) {
|
||||
dump_prefix(offset+2);
|
||||
printf("%s=", mrb_sym2name(mrb, (mrb_sym)n2->car->car));
|
||||
printf("%s=", mrb_sym2name(mrb, sym(n2->car->car)));
|
||||
parser_dump(mrb, n2->car->cdr, 0);
|
||||
n2 = n2->cdr;
|
||||
}
|
||||
@@ -5043,7 +5046,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
n = n->cdr;
|
||||
if (n->car) {
|
||||
dump_prefix(offset+1);
|
||||
printf("rest=*%s\n", mrb_sym2name(mrb, (mrb_sym)n->car));
|
||||
printf("rest=*%s\n", mrb_sym2name(mrb, sym(n->car)));
|
||||
}
|
||||
n = n->cdr;
|
||||
if (n->car) {
|
||||
@@ -5054,7 +5057,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
n = n->cdr;
|
||||
if (n) {
|
||||
dump_prefix(offset+1);
|
||||
printf("blk=&%s\n", mrb_sym2name(mrb, (mrb_sym)n));
|
||||
printf("blk=&%s\n", mrb_sym2name(mrb, sym(n)));
|
||||
}
|
||||
}
|
||||
dump_prefix(offset+1);
|
||||
@@ -5177,7 +5180,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
while (n2) {
|
||||
if (n2->car) {
|
||||
if (n2 != tree->car) printf(", ");
|
||||
printf("%s", mrb_sym2name(mrb, (mrb_sym)n2->car));
|
||||
printf("%s", mrb_sym2name(mrb, sym(n2->car)));
|
||||
}
|
||||
n2 = n2->cdr;
|
||||
}
|
||||
@@ -5194,7 +5197,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
parser_dump(mrb, tree->car, offset+1);
|
||||
dump_prefix(offset+1);
|
||||
printf("method='%s' (%d)\n",
|
||||
mrb_sym2name(mrb, (mrb_sym)tree->cdr->car),
|
||||
mrb_sym2name(mrb, sym(tree->cdr->car)),
|
||||
(int)(intptr_t)tree->cdr->car);
|
||||
tree = tree->cdr->cdr->car;
|
||||
if (tree) {
|
||||
@@ -5225,13 +5228,13 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
printf("NODE_COLON2:\n");
|
||||
parser_dump(mrb, tree->car, offset+1);
|
||||
dump_prefix(offset+1);
|
||||
printf("::%s\n", mrb_sym2name(mrb, (mrb_sym)tree->cdr));
|
||||
printf("::%s\n", mrb_sym2name(mrb, sym(tree->cdr)));
|
||||
break;
|
||||
|
||||
case NODE_COLON3:
|
||||
printf("NODE_COLON3:\n");
|
||||
dump_prefix(offset+1);
|
||||
printf("::%s\n", mrb_sym2name(mrb, (mrb_sym)tree));
|
||||
printf("::%s\n", mrb_sym2name(mrb, sym(tree)));
|
||||
break;
|
||||
|
||||
case NODE_ARRAY:
|
||||
@@ -5314,7 +5317,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
parser_dump(mrb, tree->car, offset+2);
|
||||
tree = tree->cdr;
|
||||
dump_prefix(offset+1);
|
||||
printf("op='%s' (%d)\n", mrb_sym2name(mrb, (mrb_sym)tree->car), (int)(intptr_t)tree->car);
|
||||
printf("op='%s' (%d)\n", mrb_sym2name(mrb, sym(tree->car)), (int)(intptr_t)tree->car);
|
||||
tree = tree->cdr;
|
||||
parser_dump(mrb, tree->car, offset+1);
|
||||
break;
|
||||
@@ -5366,23 +5369,23 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
break;
|
||||
|
||||
case NODE_LVAR:
|
||||
printf("NODE_LVAR %s\n", mrb_sym2name(mrb, (mrb_sym)tree));
|
||||
printf("NODE_LVAR %s\n", mrb_sym2name(mrb, sym(tree)));
|
||||
break;
|
||||
|
||||
case NODE_GVAR:
|
||||
printf("NODE_GVAR %s\n", mrb_sym2name(mrb, (mrb_sym)tree));
|
||||
printf("NODE_GVAR %s\n", mrb_sym2name(mrb, sym(tree)));
|
||||
break;
|
||||
|
||||
case NODE_IVAR:
|
||||
printf("NODE_IVAR %s\n", mrb_sym2name(mrb, (mrb_sym)tree));
|
||||
printf("NODE_IVAR %s\n", mrb_sym2name(mrb, sym(tree)));
|
||||
break;
|
||||
|
||||
case NODE_CVAR:
|
||||
printf("NODE_CVAR %s\n", mrb_sym2name(mrb, (mrb_sym)tree));
|
||||
printf("NODE_CVAR %s\n", mrb_sym2name(mrb, sym(tree)));
|
||||
break;
|
||||
|
||||
case NODE_CONST:
|
||||
printf("NODE_CONST %s\n", mrb_sym2name(mrb, (mrb_sym)tree));
|
||||
printf("NODE_CONST %s\n", mrb_sym2name(mrb, sym(tree)));
|
||||
break;
|
||||
|
||||
case NODE_BACK_REF:
|
||||
@@ -5394,7 +5397,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
break;
|
||||
|
||||
case NODE_ARG:
|
||||
printf("NODE_ARG %s\n", mrb_sym2name(mrb, (mrb_sym)tree));
|
||||
printf("NODE_ARG %s\n", mrb_sym2name(mrb, sym(tree)));
|
||||
break;
|
||||
|
||||
case NODE_BLOCK_ARG:
|
||||
@@ -5425,7 +5428,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
break;
|
||||
|
||||
case NODE_SYM:
|
||||
printf("NODE_SYM :%s\n", mrb_sym2name(mrb, (mrb_sym)tree));
|
||||
printf("NODE_SYM :%s\n", mrb_sym2name(mrb, sym(tree)));
|
||||
break;
|
||||
|
||||
case NODE_SELF:
|
||||
@@ -5446,29 +5449,29 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
|
||||
case NODE_ALIAS:
|
||||
printf("NODE_ALIAS %s %s:\n",
|
||||
mrb_sym2name(mrb, (mrb_sym)tree->car),
|
||||
mrb_sym2name(mrb, (mrb_sym)tree->cdr));
|
||||
mrb_sym2name(mrb, sym(tree->car)),
|
||||
mrb_sym2name(mrb, sym(tree->cdr)));
|
||||
break;
|
||||
|
||||
case NODE_UNDEF:
|
||||
printf("NODE_UNDEF %s:\n",
|
||||
mrb_sym2name(mrb, (mrb_sym)tree));
|
||||
mrb_sym2name(mrb, sym(tree)));
|
||||
break;
|
||||
|
||||
case NODE_CLASS:
|
||||
printf("NODE_CLASS:\n");
|
||||
if (tree->car->car == (node*)0) {
|
||||
dump_prefix(offset+1);
|
||||
printf(":%s\n", mrb_sym2name(mrb, (mrb_sym)tree->car->cdr));
|
||||
printf(":%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
|
||||
}
|
||||
else if (tree->car->car == (node*)1) {
|
||||
dump_prefix(offset+1);
|
||||
printf("::%s\n", mrb_sym2name(mrb, (mrb_sym)tree->car->cdr));
|
||||
printf("::%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
|
||||
}
|
||||
else {
|
||||
parser_dump(mrb, tree->car->car, offset+1);
|
||||
dump_prefix(offset+1);
|
||||
printf("::%s\n", mrb_sym2name(mrb, (mrb_sym)tree->car->cdr));
|
||||
printf("::%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
|
||||
}
|
||||
if (tree->cdr->car) {
|
||||
dump_prefix(offset+1);
|
||||
@@ -5484,16 +5487,16 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
printf("NODE_MODULE:\n");
|
||||
if (tree->car->car == (node*)0) {
|
||||
dump_prefix(offset+1);
|
||||
printf(":%s\n", mrb_sym2name(mrb, (mrb_sym)tree->car->cdr));
|
||||
printf(":%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
|
||||
}
|
||||
else if (tree->car->car == (node*)1) {
|
||||
dump_prefix(offset+1);
|
||||
printf("::%s\n", mrb_sym2name(mrb, (mrb_sym)tree->car->cdr));
|
||||
printf("::%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
|
||||
}
|
||||
else {
|
||||
parser_dump(mrb, tree->car->car, offset+1);
|
||||
dump_prefix(offset+1);
|
||||
printf("::%s\n", mrb_sym2name(mrb, (mrb_sym)tree->car->cdr));
|
||||
printf("::%s\n", mrb_sym2name(mrb, sym(tree->car->cdr)));
|
||||
}
|
||||
dump_prefix(offset+1);
|
||||
printf("body:\n");
|
||||
@@ -5511,7 +5514,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
case NODE_DEF:
|
||||
printf("NODE_DEF:\n");
|
||||
dump_prefix(offset+1);
|
||||
printf("%s\n", mrb_sym2name(mrb, (mrb_sym)tree->car));
|
||||
printf("%s\n", mrb_sym2name(mrb, sym(tree->car)));
|
||||
tree = tree->cdr;
|
||||
{
|
||||
node *n2 = tree->car;
|
||||
@@ -5523,7 +5526,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
while (n2) {
|
||||
if (n2->car) {
|
||||
if (n2 != tree->car) printf(", ");
|
||||
printf("%s", mrb_sym2name(mrb, (mrb_sym)n2->car));
|
||||
printf("%s", mrb_sym2name(mrb, sym(n2->car)));
|
||||
}
|
||||
n2 = n2->cdr;
|
||||
}
|
||||
@@ -5548,7 +5551,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
|
||||
while (n2) {
|
||||
dump_prefix(offset+2);
|
||||
printf("%s=", mrb_sym2name(mrb, (mrb_sym)n2->car->car));
|
||||
printf("%s=", mrb_sym2name(mrb, sym(n2->car->car)));
|
||||
parser_dump(mrb, n2->car->cdr, 0);
|
||||
n2 = n2->cdr;
|
||||
}
|
||||
@@ -5557,7 +5560,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
n = n->cdr;
|
||||
if (n->car) {
|
||||
dump_prefix(offset+1);
|
||||
printf("rest=*%s\n", mrb_sym2name(mrb, (mrb_sym)n->car));
|
||||
printf("rest=*%s\n", mrb_sym2name(mrb, sym(n->car)));
|
||||
}
|
||||
n = n->cdr;
|
||||
if (n->car) {
|
||||
@@ -5568,7 +5571,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
n = n->cdr;
|
||||
if (n) {
|
||||
dump_prefix(offset+1);
|
||||
printf("blk=&%s\n", mrb_sym2name(mrb, (mrb_sym)n));
|
||||
printf("blk=&%s\n", mrb_sym2name(mrb, sym(n)));
|
||||
}
|
||||
}
|
||||
parser_dump(mrb, tree->cdr->car, offset+1);
|
||||
@@ -5579,7 +5582,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
parser_dump(mrb, tree->car, offset+1);
|
||||
tree = tree->cdr;
|
||||
dump_prefix(offset+1);
|
||||
printf(":%s\n", mrb_sym2name(mrb, (mrb_sym)tree->car));
|
||||
printf(":%s\n", mrb_sym2name(mrb, sym(tree->car)));
|
||||
tree = tree->cdr->cdr;
|
||||
if (tree->car) {
|
||||
node *n = tree->car;
|
||||
@@ -5598,7 +5601,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
|
||||
while (n2) {
|
||||
dump_prefix(offset+2);
|
||||
printf("%s=", mrb_sym2name(mrb, (mrb_sym)n2->car->car));
|
||||
printf("%s=", mrb_sym2name(mrb, sym(n2->car->car)));
|
||||
parser_dump(mrb, n2->car->cdr, 0);
|
||||
n2 = n2->cdr;
|
||||
}
|
||||
@@ -5607,7 +5610,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
n = n->cdr;
|
||||
if (n->car) {
|
||||
dump_prefix(offset+1);
|
||||
printf("rest=*%s\n", mrb_sym2name(mrb, (mrb_sym)n->car));
|
||||
printf("rest=*%s\n", mrb_sym2name(mrb, sym(n->car)));
|
||||
}
|
||||
n = n->cdr;
|
||||
if (n->car) {
|
||||
@@ -5618,7 +5621,7 @@ parser_dump(mrb_state *mrb, node *tree, int offset)
|
||||
n = n->cdr;
|
||||
if (n) {
|
||||
dump_prefix(offset+1);
|
||||
printf("blk=&%s\n", mrb_sym2name(mrb, (mrb_sym)n));
|
||||
printf("blk=&%s\n", mrb_sym2name(mrb, sym(n)));
|
||||
}
|
||||
}
|
||||
tree = tree->cdr;
|
||||
|
||||
Reference in New Issue
Block a user