From 2838fcf2aacb2fa33b905b8b145b6388248be10b Mon Sep 17 00:00:00 2001 From: mattn Date: Fri, 22 Feb 2013 16:19:00 +0900 Subject: Fix indent --- src/codegen.c | 296 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 148 insertions(+), 148 deletions(-) (limited to 'src') diff --git a/src/codegen.c b/src/codegen.c index 6c7f10805..3d9440a2e 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -168,8 +168,8 @@ genop_peep(codegen_scope *s, mrb_code i, int val) switch (c1) { case OP_MOVE: if (GETARG_A(i) == GETARG_B(i)) { - /* skip useless OP_MOVE */ - return; + /* skip useless OP_MOVE */ + return; } if (val) break; switch (c0) { @@ -178,10 +178,10 @@ genop_peep(codegen_scope *s, mrb_code i, int val) /* skip swapping OP_MOVE */ return; } - if (GETARG_B(i) == GETARG_A(i0) && GETARG_A(i0) >= s->nlocals) { - s->iseq[s->pc-1] = MKOP_AB(OP_MOVE, GETARG_A(i), GETARG_B(i0)); - return; - } + if (GETARG_B(i) == GETARG_A(i0) && GETARG_A(i0) >= s->nlocals) { + s->iseq[s->pc-1] = MKOP_AB(OP_MOVE, GETARG_A(i), GETARG_B(i0)); + return; + } break; case OP_LOADI: if (GETARG_B(i) == GETARG_A(i0) && GETARG_A(i0) >= s->nlocals) { @@ -229,7 +229,7 @@ genop_peep(codegen_scope *s, mrb_code i, int val) } break; default: - break; + break; } break; case OP_SETIV: @@ -269,33 +269,33 @@ genop_peep(codegen_scope *s, mrb_code i, int val) case OP_RETURN: switch (c0) { case OP_RETURN: - return; + return; case OP_MOVE: - s->iseq[s->pc-1] = MKOP_AB(OP_RETURN, GETARG_B(i0), OP_R_NORMAL); - return; + s->iseq[s->pc-1] = MKOP_AB(OP_RETURN, GETARG_B(i0), OP_R_NORMAL); + return; case OP_LOADI: - s->iseq[s->pc-1] = MKOP_AsBx(OP_LOADI, 0, GETARG_sBx(i0)); - genop(s, MKOP_AB(OP_RETURN, 0, OP_R_NORMAL)); - return; + s->iseq[s->pc-1] = MKOP_AsBx(OP_LOADI, 0, GETARG_sBx(i0)); + genop(s, MKOP_AB(OP_RETURN, 0, OP_R_NORMAL)); + return; case OP_ARRAY: case OP_HASH: case OP_RANGE: case OP_AREF: case OP_GETUPVAR: - s->iseq[s->pc-1] = MKOP_ABC(c0, 0, GETARG_B(i0), GETARG_C(i0)); - genop(s, MKOP_AB(OP_RETURN, 0, OP_R_NORMAL)); - return; + s->iseq[s->pc-1] = MKOP_ABC(c0, 0, GETARG_B(i0), GETARG_C(i0)); + genop(s, MKOP_AB(OP_RETURN, 0, OP_R_NORMAL)); + return; case OP_SETIV: case OP_SETCV: case OP_SETCONST: case OP_SETMCNST: case OP_SETUPVAR: case OP_SETGLOBAL: - s->pc--; - genop_peep(s, i0, NOVAL); - i0 = s->iseq[s->pc-1]; - genop(s, MKOP_AB(OP_RETURN, GETARG_A(i0), OP_R_NORMAL)); - return; + s->pc--; + genop_peep(s, i0, NOVAL); + i0 = s->iseq[s->pc-1]; + genop(s, MKOP_AB(OP_RETURN, GETARG_A(i0), OP_R_NORMAL)); + return; case OP_LOADSYM: case OP_GETGLOBAL: case OP_GETIV: @@ -304,37 +304,37 @@ genop_peep(codegen_scope *s, mrb_code i, int val) case OP_GETSPECIAL: case OP_LOADL: case OP_STRING: - s->iseq[s->pc-1] = MKOP_ABx(c0, 0, GETARG_Bx(i0)); - genop(s, MKOP_AB(OP_RETURN, 0, OP_R_NORMAL)); - return; + s->iseq[s->pc-1] = MKOP_ABx(c0, 0, GETARG_Bx(i0)); + genop(s, MKOP_AB(OP_RETURN, 0, OP_R_NORMAL)); + return; case OP_SCLASS: - s->iseq[s->pc-1] = MKOP_AB(c0, GETARG_A(i), GETARG_B(i0)); - genop(s, MKOP_AB(OP_RETURN, 0, OP_R_NORMAL)); - return; + s->iseq[s->pc-1] = MKOP_AB(c0, GETARG_A(i), GETARG_B(i0)); + genop(s, MKOP_AB(OP_RETURN, 0, OP_R_NORMAL)); + return; case OP_LOADNIL: case OP_LOADSELF: case OP_LOADT: case OP_LOADF: case OP_OCLASS: - s->iseq[s->pc-1] = MKOP_A(c0, 0); - genop(s, MKOP_AB(OP_RETURN, 0, OP_R_NORMAL)); - return; + s->iseq[s->pc-1] = MKOP_A(c0, 0); + genop(s, MKOP_AB(OP_RETURN, 0, OP_R_NORMAL)); + return; default: - break; + break; } break; case OP_ADD: case OP_SUB: if (c0 == OP_LOADI) { - int c = GETARG_sBx(i0); - - if (c1 == OP_SUB) c = -c; - if (c > 127 || c < -127) break; - if (0 <= c) - s->iseq[s->pc-1] = MKOP_ABC(OP_ADDI, GETARG_A(i), GETARG_B(i), c); - else - s->iseq[s->pc-1] = MKOP_ABC(OP_SUBI, GETARG_A(i), GETARG_B(i), -c); - return; + int c = GETARG_sBx(i0); + + if (c1 == OP_SUB) c = -c; + if (c > 127 || c < -127) break; + if (0 <= c) + s->iseq[s->pc-1] = MKOP_ABC(OP_ADDI, GETARG_A(i), GETARG_B(i), c); + else + s->iseq[s->pc-1] = MKOP_ABC(OP_SUBI, GETARG_A(i), GETARG_B(i), -c); + return; } default: break; @@ -419,7 +419,7 @@ new_lit(codegen_scope *s, mrb_value val) } s->irep->pool[s->irep->plen] = val; i = s->irep->plen++; - + return i; } @@ -681,33 +681,33 @@ gen_values(codegen_scope *s, node *t, int val) while (t) { if ((intptr_t)t->car->car == NODE_SPLAT) { // splat mode if (val) { - pop_n(n); - genop(s, MKOP_ABC(OP_ARRAY, cursp(), cursp(), n)); - push(); - codegen(s, t->car, VAL); - pop(); pop(); - genop(s, MKOP_AB(OP_ARYCAT, cursp(), cursp()+1)); - t = t->cdr; - while (t) { - push(); - codegen(s, t->car, VAL); - pop(); pop(); - if ((intptr_t)t->car->car == NODE_SPLAT) { - genop(s, MKOP_AB(OP_ARYCAT, cursp(), cursp()+1)); - } - else { - genop(s, MKOP_AB(OP_ARYPUSH, cursp(), cursp()+1)); - } - t = t->cdr; - } + pop_n(n); + genop(s, MKOP_ABC(OP_ARRAY, cursp(), cursp(), n)); + push(); + codegen(s, t->car, VAL); + pop(); pop(); + genop(s, MKOP_AB(OP_ARYCAT, cursp(), cursp()+1)); + t = t->cdr; + while (t) { + push(); + codegen(s, t->car, VAL); + pop(); pop(); + if ((intptr_t)t->car->car == NODE_SPLAT) { + genop(s, MKOP_AB(OP_ARYCAT, cursp(), cursp()+1)); + } + else { + genop(s, MKOP_AB(OP_ARYPUSH, cursp(), cursp()+1)); + } + t = t->cdr; + } } else { - codegen(s, t->car->cdr, NOVAL); - t = t->cdr; - while (t) { - codegen(s, t->car, NOVAL); - t = t->cdr; - } + codegen(s, t->car->cdr, NOVAL); + t = t->cdr; + while (t) { + codegen(s, t->car, NOVAL); + t = t->cdr; + } } return -1; } @@ -792,11 +792,11 @@ gen_call(codegen_scope *s, node *tree, mrb_sym name, int sp, int val) } else { if (sendv) n = CALL_MAXARGS; - if (blk > 0) { /* no block */ - genop(s, MKOP_ABC(OP_SEND, cursp(), idx, n)); + if (blk > 0) { /* no block */ + genop(s, MKOP_ABC(OP_SEND, cursp(), idx, n)); } else { - genop(s, MKOP_ABC(OP_SENDB, cursp(), idx, n)); + genop(s, MKOP_ABC(OP_SENDB, cursp(), idx, n)); } } } @@ -947,9 +947,9 @@ readint_float(codegen_scope *s, const char *p, int base) c = tolower((unsigned char)c); for (n=0; npc1 = onerr; if (tree->car) { codegen(s, tree->car, val); - if (val) pop(); + if (val) pop(); } lp->type = LOOP_RESCUE; noexc = new_label(s); @@ -1166,16 +1166,16 @@ codegen(codegen_scope *s, node *tree, int val) else { if (val) { pop(); - pos2 = new_label(s); - genop(s, MKOP_sBx(OP_JMP, 0)); - dispatch(s, pos1); + pos2 = new_label(s); + genop(s, MKOP_sBx(OP_JMP, 0)); + dispatch(s, pos1); genop(s, MKOP_A(OP_LOADNIL, cursp())); - dispatch(s, pos2); + dispatch(s, pos2); push(); } - else { - dispatch(s, pos1); - } + else { + dispatch(s, pos1); + } } } break; @@ -1268,8 +1268,8 @@ codegen(codegen_scope *s, node *tree, int val) genop(s, MKOP_ABC(OP_SEND, cursp(), new_msym(s, mrb_intern(s->mrb, "===")), 1)); } else { - pop(); - } + pop(); + } tmp = new_label(s); genop(s, MKOP_AsBx(OP_JMPIF, cursp(), pos2)); pos2 = tmp; @@ -1281,7 +1281,7 @@ codegen(codegen_scope *s, node *tree, int val) dispatch_linked(s, pos2); } codegen(s, tree->car->cdr, val); - if (val) pop(); + if (val) pop(); tmp = new_label(s); genop(s, MKOP_sBx(OP_JMP, pos3)); pos3 = tmp; @@ -1289,8 +1289,8 @@ codegen(codegen_scope *s, node *tree, int val) tree = tree->cdr; } if (val) { - genop(s, MKOP_A(OP_LOADNIL, cursp())); - push(); + genop(s, MKOP_A(OP_LOADNIL, cursp())); + push(); } if (pos3) dispatch_linked(s, pos3); } @@ -1353,7 +1353,7 @@ codegen(codegen_scope *s, node *tree, int val) n = gen_values(s, tree, val); if (n >= 0) { if (val) { - pop_n(n); + pop_n(n); genop(s, MKOP_ABC(OP_ARRAY, cursp(), cursp(), n)); push(); } @@ -1375,7 +1375,7 @@ codegen(codegen_scope *s, node *tree, int val) tree = tree->cdr; } if (val) { - pop_n(len*2); + pop_n(len*2); genop(s, MKOP_ABC(OP_HASH, cursp(), cursp(), len)); push(); } @@ -1465,18 +1465,18 @@ codegen(codegen_scope *s, node *tree, int val) codegen(s, tree->car, VAL); if (len == 2 && - ((name[0] == '|' && name[1] == '|') || - (name[0] == '&' && name[1] == '&'))) { - int pos; - - pop(); - pos = new_label(s); - genop(s, MKOP_AsBx(name[0] == '|' ? OP_JMPIF : OP_JMPNOT, cursp(), 0)); - codegen(s, tree->cdr->cdr->car, VAL); - pop(); - gen_assignment(s, tree->car, cursp(), val); - dispatch(s, pos); - break; + ((name[0] == '|' && name[1] == '|') || + (name[0] == '&' && name[1] == '&'))) { + int pos; + + pop(); + pos = new_label(s); + genop(s, MKOP_AsBx(name[0] == '|' ? OP_JMPIF : OP_JMPNOT, cursp(), 0)); + codegen(s, tree->cdr->cdr->car, VAL); + pop(); + gen_assignment(s, tree->car, cursp(), val); + dispatch(s, pos); + break; } codegen(s, tree->cdr->cdr->car, VAL); pop(); pop(); @@ -1501,7 +1501,7 @@ codegen(codegen_scope *s, node *tree, int val) genop(s, MKOP_ABC(OP_GE, cursp(), idx, 1)); } else { - genop(s, MKOP_ABC(OP_SEND, cursp(), idx, 1)); + genop(s, MKOP_ABC(OP_SEND, cursp(), idx, 1)); } } gen_assignment(s, tree->car, cursp(), val); @@ -1511,16 +1511,16 @@ codegen(codegen_scope *s, node *tree, int val) { int n = 0, noop = 0, sendv = 0; - push(); /* room for receiver */ + push(); /* room for receiver */ if (tree) { node *args = tree->car; - if (args) { - n = gen_values(s, args, VAL); - if (n < 0) { - n = noop = sendv = 1; - push(); - } - } + if (args) { + n = gen_values(s, args, VAL); + if (n < 0) { + n = noop = sendv = 1; + push(); + } + } } if (tree && tree->cdr) { codegen(s, tree->cdr, VAL); @@ -1541,7 +1541,7 @@ codegen(codegen_scope *s, node *tree, int val) codegen_scope *s2 = s; int lv = 0, ainfo = 0; - push(); /* room for receiver */ + push(); /* room for receiver */ while (!s2->mscope) { lv++; s2 = s2->prev; @@ -1550,7 +1550,7 @@ codegen(codegen_scope *s, node *tree, int val) if (s2) ainfo = s2->ainfo; genop(s, MKOP_ABx(OP_ARGARY, cursp(), (ainfo<<4)|(lv & 0xf))); if (tree && tree->cdr) { - push(); + push(); codegen(s, tree->cdr, VAL); pop_n(2); } @@ -1782,20 +1782,20 @@ codegen(codegen_scope *s, node *tree, int val) i = readint_mrb_int(s, p, base, FALSE, &overflow); if (overflow) { - double f = readint_float(s, p, base); - int off = new_lit(s, mrb_float_value(f)); + double f = readint_float(s, p, base); + int off = new_lit(s, mrb_float_value(f)); - genop(s, MKOP_ABx(OP_LOADL, cursp(), off)); + genop(s, MKOP_ABx(OP_LOADL, cursp(), off)); } else { - if (i < MAXARG_sBx && i > -MAXARG_sBx) { - co = MKOP_AsBx(OP_LOADI, cursp(), i); - } - else { - int off = new_lit(s, mrb_fixnum_value(i)); - co = MKOP_ABx(OP_LOADL, cursp(), off); - } - genop(s, co); + if (i < MAXARG_sBx && i > -MAXARG_sBx) { + co = MKOP_AsBx(OP_LOADI, cursp(), i); + } + else { + int off = new_lit(s, mrb_fixnum_value(i)); + co = MKOP_ABx(OP_LOADL, cursp(), off); + } + genop(s, co); } push(); } @@ -1838,21 +1838,21 @@ codegen(codegen_scope *s, node *tree, int val) i = readint_mrb_int(s, p, base, TRUE, &overflow); if (overflow) { - double f = readint_float(s, p, base); - int off = new_lit(s, mrb_float_value(-f)); - - genop(s, MKOP_ABx(OP_LOADL, cursp(), off)); - } - else { - if (i < MAXARG_sBx && i > -MAXARG_sBx) { - co = MKOP_AsBx(OP_LOADI, cursp(), i); - } - else { - int off = new_lit(s, mrb_fixnum_value(i)); - co = MKOP_ABx(OP_LOADL, cursp(), off); - } - genop(s, co); - } + double f = readint_float(s, p, base); + int off = new_lit(s, mrb_float_value(-f)); + + genop(s, MKOP_ABx(OP_LOADL, cursp(), off)); + } + else { + if (i < MAXARG_sBx && i > -MAXARG_sBx) { + co = MKOP_AsBx(OP_LOADI, cursp(), i); + } + else { + int off = new_lit(s, mrb_fixnum_value(i)); + co = MKOP_ABx(OP_LOADL, cursp(), off); + } + genop(s, co); + } push(); } break; @@ -1925,11 +1925,11 @@ codegen(codegen_scope *s, node *tree, int val) push(); genop(s, MKOP_ABx(OP_STRING, cursp(), off)); if (p2) { - push(); - off = new_lit(s, mrb_str_new(s->mrb, p2, strlen(p2))); - genop(s, MKOP_ABx(OP_STRING, cursp(), off)); - n++; - pop(); + push(); + off = new_lit(s, mrb_str_new(s->mrb, p2, strlen(p2))); + genop(s, MKOP_ABx(OP_STRING, cursp(), off)); + n++; + pop(); } pop(); sym = new_sym(s, mrb_intern(s->mrb, "new")); @@ -2178,7 +2178,7 @@ scope_new(mrb_state *mrb, codegen_scope *prev, node *lv) p->irep->slen = 0; p->lv = lv; - p->sp += node_len(lv)+1; /* add self */ + p->sp += node_len(lv)+1; /* add self */ p->nlocals = p->sp; p->ai = mrb_gc_arena_save(mrb); @@ -2195,7 +2195,7 @@ scope_finish(codegen_scope *s) { mrb_state *mrb = s->mrb; mrb_irep *irep = s->irep; - + irep->flags = 0; if (s->iseq) { irep->iseq = (mrb_code *)codegen_realloc(s, s->iseq, sizeof(mrb_code)*s->pc); @@ -2540,10 +2540,10 @@ codedump(mrb_state *mrb, int n) break; case OP_STRING: { - mrb_value s = irep->pool[GETARG_Bx(c)]; - - s = mrb_str_dump(mrb, s); - printf("OP_STRING\tR%d\t%s\n", GETARG_A(c), RSTRING_PTR(s)); + mrb_value s = irep->pool[GETARG_Bx(c)]; + + s = mrb_str_dump(mrb, s); + printf("OP_STRING\tR%d\t%s\n", GETARG_A(c), RSTRING_PTR(s)); } break; case OP_STRCAT: -- cgit v1.2.3 From 8ea0e9d523a6ce158a47add8b349da528b9cae8a Mon Sep 17 00:00:00 2001 From: mattn Date: Fri, 22 Feb 2013 19:15:26 +0900 Subject: Call compile method to override to memolize instances --- src/codegen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/codegen.c b/src/codegen.c index 3d9440a2e..86d61fecf 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -1932,7 +1932,7 @@ codegen(codegen_scope *s, node *tree, int val) pop(); } pop(); - sym = new_sym(s, mrb_intern(s->mrb, "new")); + sym = new_sym(s, mrb_intern(s->mrb, "compile")); genop(s, MKOP_ABC(OP_SEND, cursp(), sym, n)); mrb_gc_arena_restore(s->mrb, ai); push(); -- cgit v1.2.3