diff options
Diffstat (limited to 'src/codedump.c')
| -rw-r--r-- | src/codedump.c | 212 |
1 files changed, 132 insertions, 80 deletions
diff --git a/src/codedump.c b/src/codedump.c index 945d844..4b0f294 100644 --- a/src/codedump.c +++ b/src/codedump.c @@ -8,6 +8,16 @@ #include <mruby/internal.h> #ifndef MRB_NO_STDIO +static mrb_bool +print_r_p(mrb_state *mrb, const mrb_irep *irep, size_t n) +{ + if (n == 0) return FALSE; + if (!irep->lv) return FALSE; + if (n >= irep->nlocals) return FALSE; + if (!irep->lv[n-1]) return FALSE; + return TRUE; +} + static void print_r(mrb_state *mrb, const mrb_irep *irep, size_t n, FILE *out) { @@ -20,25 +30,21 @@ print_r(mrb_state *mrb, const mrb_irep *irep, size_t n, FILE *out) static void print_lv_a(mrb_state *mrb, const mrb_irep *irep, uint16_t a, FILE *out) { - if (!irep->lv || a >= irep->nlocals || a == 0) { - fprintf(out, "\n"); - return; + if (print_r_p(mrb, irep, a)) { + fprintf(out, "\t;"); + print_r(mrb, irep, a, out); } - fprintf(out, "\t;"); - print_r(mrb, irep, a, out); fprintf(out, "\n"); } static void print_lv_ab(mrb_state *mrb, const mrb_irep *irep, uint16_t a, uint16_t b, FILE *out) { - if (!irep->lv || (a >= irep->nlocals && b >= irep->nlocals) || a+b == 0) { - fprintf(out, "\n"); - return; + if (print_r_p(mrb, irep, a) || print_r_p(mrb, irep, b)) { + fprintf(out, "\t;"); + print_r(mrb, irep, a, out); + print_r(mrb, irep, b, out); } - fprintf(out, "\t;"); - if (a > 0) print_r(mrb, irep, a, out); - if (b > 0) print_r(mrb, irep, b, out); fprintf(out, "\n"); } @@ -160,7 +166,7 @@ codedump(mrb_state *mrb, const mrb_irep *irep, FILE *out) fprintf(out, "NOP\n"); break; CASE(OP_MOVE, BB): - fprintf(out, "MOVE\t\tR%d\tR%d\t", a, b); + fprintf(out, "MOVE\t\tR%d\tR%d", a, b); print_lv_ab(mrb, irep, a, b, out); break; @@ -180,29 +186,29 @@ codedump(mrb_state *mrb, const mrb_irep *irep, FILE *out) break; #endif default: - fprintf(out, "LOADL\t\tR%d\tL[%d]\t", a, b); + fprintf(out, "LOADL\t\tR%d\tL[%d]", a, b); break; } print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADI8, BB): - fprintf(out, "LOADI8\tR%d\t%d\t", a, b); + fprintf(out, "LOADI8\tR%d\t%d", a, b); print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADINEG, BB): - fprintf(out, "LOADINEG\tR%d\t-%d\t", a, b); + fprintf(out, "LOADINEG\tR%d\t-%d", a, b); print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADI16, BS): - fprintf(out, "LOADI16\tR%d\t%d\t", a, (int)(int16_t)b); + fprintf(out, "LOADI16\tR%d\t%d", a, (int)(int16_t)b); print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADI32, BSS): - fprintf(out, "LOADI32\tR%d\t%d\t", a, (int32_t)(((uint32_t)b<<16)+c)); + fprintf(out, "LOADI32\tR%d\t%d", a, (int32_t)(((uint32_t)b<<16)+c)); print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADI__1, B): - fprintf(out, "LOADI__1\tR%d\t(-1)\t", a); + fprintf(out, "LOADI__1\tR%d\t(-1)", a); print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADI_0, B): goto L_LOADI; @@ -215,90 +221,93 @@ codedump(mrb_state *mrb, const mrb_irep *irep, FILE *out) CASE(OP_LOADI_7, B): L_LOADI: b = ins-(int)OP_LOADI_0; - fprintf(out, "LOADI_%d\tR%d\t(%d)\t", b, a, b); + fprintf(out, "LOADI_%d\tR%d\t(%d)", b, a, b); print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADSYM, BB): - fprintf(out, "LOADSYM\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + fprintf(out, "LOADSYM\tR%d\t:%s", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADNIL, B): - fprintf(out, "LOADNIL\tR%d\t(nil)\t", a); + fprintf(out, "LOADNIL\tR%d\t(nil)", a); print_lv_a(mrb, irep, a, out); break; CASE(OP_LOADSELF, B): - fprintf(out, "LOADSELF\tR%d\t(R0)\t", a); + fprintf(out, "LOADSELF\tR%d\t(R0)", a); print_lv_a(mrb, irep, a, out); break; - CASE(OP_LOADT, B): - fprintf(out, "LOADT\t\tR%d\t(true)\t", a); + CASE(OP_LOADTRUE, B): + fprintf(out, "LOADTRUE\tR%d\t(true)", a); print_lv_a(mrb, irep, a, out); break; - CASE(OP_LOADF, B): - fprintf(out, "LOADF\t\tR%d\t(false)\t", a); + CASE(OP_LOADFALSE, B): + fprintf(out, "LOADFALSE\tR%d\t(false)", a); print_lv_a(mrb, irep, a, out); break; CASE(OP_GETGV, BB): - fprintf(out, "GETGV\t\tR%d\t%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + fprintf(out, "GETGV\t\tR%d\t%s", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a, out); break; CASE(OP_SETGV, BB): - fprintf(out, "SETGV\t\t%s\tR%d\t", mrb_sym_dump(mrb, irep->syms[b]), a); + fprintf(out, "SETGV\t\t%s\tR%d", mrb_sym_dump(mrb, irep->syms[b]), a); print_lv_a(mrb, irep, a, out); break; CASE(OP_GETSV, BB): - fprintf(out, "GETSV\t\tR%d\t%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + fprintf(out, "GETSV\t\tR%d\t%s", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a, out); break; CASE(OP_SETSV, BB): - fprintf(out, "SETSV\t\t%s\tR%d\t", mrb_sym_dump(mrb, irep->syms[b]), a); + fprintf(out, "SETSV\t\t%s\tR%d", mrb_sym_dump(mrb, irep->syms[b]), a); print_lv_a(mrb, irep, a, out); break; CASE(OP_GETCONST, BB): - fprintf(out, "GETCONST\tR%d\t%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + fprintf(out, "GETCONST\tR%d\t%s", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a, out); break; CASE(OP_SETCONST, BB): - fprintf(out, "SETCONST\t%s\tR%d\t", mrb_sym_dump(mrb, irep->syms[b]), a); + fprintf(out, "SETCONST\t%s\tR%d", mrb_sym_dump(mrb, irep->syms[b]), a); print_lv_a(mrb, irep, a, out); break; CASE(OP_GETMCNST, BB): - fprintf(out, "GETMCNST\tR%d\tR%d::%s\t", a, a, mrb_sym_dump(mrb, irep->syms[b])); + fprintf(out, "GETMCNST\tR%d\t(R%d)::%s", a, a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a, out); break; CASE(OP_SETMCNST, BB): - fprintf(out, "SETMCNST\tR%d::%s\tR%d\t", a+1, mrb_sym_dump(mrb, irep->syms[b]), a); + fprintf(out, "SETMCNST\t(R%d)::%s\tR%d", a+1, mrb_sym_dump(mrb, irep->syms[b]), a); print_lv_a(mrb, irep, a, out); break; CASE(OP_GETIV, BB): - fprintf(out, "GETIV\t\tR%d\t%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + fprintf(out, "GETIV\t\tR%d\t%s", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a, out); break; CASE(OP_SETIV, BB): - fprintf(out, "SETIV\t\t%s\tR%d\t", mrb_sym_dump(mrb, irep->syms[b]), a); + fprintf(out, "SETIV\t\t%s\tR%d", mrb_sym_dump(mrb, irep->syms[b]), a); print_lv_a(mrb, irep, a, out); break; CASE(OP_GETUPVAR, BBB): - fprintf(out, "GETUPVAR\tR%d\t%d\t%d\t", a, b, c); + fprintf(out, "GETUPVAR\tR%d\t%d\t%d", a, b, c); print_lv_a(mrb, irep, a, out); break; CASE(OP_SETUPVAR, BBB): - fprintf(out, "SETUPVAR\tR%d\t%d\t%d\t", a, b, c); + fprintf(out, "SETUPVAR\tR%d\t%d\t%d", a, b, c); print_lv_a(mrb, irep, a, out); break; CASE(OP_GETCV, BB): - fprintf(out, "GETCV\t\tR%d\t%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + fprintf(out, "GETCV\t\tR%d\t%s", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a, out); break; CASE(OP_SETCV, BB): - fprintf(out, "SETCV\t\t%s\tR%d\t", mrb_sym_dump(mrb, irep->syms[b]), a); + fprintf(out, "SETCV\t\t%s\tR%d", mrb_sym_dump(mrb, irep->syms[b]), a); print_lv_a(mrb, irep, a, out); break; CASE(OP_GETIDX, B): - fprintf(out, "GETIDX\tR%d\tR%d\n", a, a+1); + fprintf(out, "GETIDX\tR%d\t(R%d)\n", a, a+1); + break; + CASE(OP_GETIDX0, BB): + fprintf(out, "GETIDX0\tR%d\tR%d[0]\n", a, b); break; CASE(OP_SETIDX, B): - fprintf(out, "SETIDX\tR%d\tR%d\tR%d\n", a, a+1, a+2); + fprintf(out, "SETIDX\tR%d\t(R%d)\t(R%d)\n", a, a+1, a+2); break; CASE(OP_JMP, S): i = pc - irep->iseq; @@ -310,23 +319,26 @@ codedump(mrb_state *mrb, const mrb_irep *irep, FILE *out) break; CASE(OP_JMPIF, BS): i = pc - irep->iseq; - fprintf(out, "JMPIF\t\tR%d\t%03d\t", a, (int)i+(int16_t)b); + fprintf(out, "JMPIF\t\tR%d\t%03d", a, (int)i+(int16_t)b); print_lv_a(mrb, irep, a, out); break; CASE(OP_JMPNOT, BS): i = pc - irep->iseq; - fprintf(out, "JMPNOT\tR%d\t%03d\t", a, (int)i+(int16_t)b); + fprintf(out, "JMPNOT\tR%d\t%03d", a, (int)i+(int16_t)b); print_lv_a(mrb, irep, a, out); break; CASE(OP_JMPNIL, BS): i = pc - irep->iseq; - fprintf(out, "JMPNIL\tR%d\t%03d\t", a, (int)i+(int16_t)b); + fprintf(out, "JMPNIL\tR%d\t%03d", a, (int)i+(int16_t)b); print_lv_a(mrb, irep, a, out); break; CASE(OP_SSEND, BBB): fprintf(out, "SSEND\t\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); print_args(c, out); break; + CASE(OP_SSEND0, BB): + fprintf(out, "SSEND0\tR%d\t:%s\n", a, mrb_sym_dump(mrb, irep->syms[b])); + break; CASE(OP_SSENDB, BBB): fprintf(out, "SSENDB\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); print_args(c, out); @@ -335,6 +347,9 @@ codedump(mrb_state *mrb, const mrb_irep *irep, FILE *out) fprintf(out, "SEND\t\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); print_args(c, out); break; + CASE(OP_SEND0, BB): + fprintf(out, "SEND0\t\tR%d\t:%s\n", a, mrb_sym_dump(mrb, irep->syms[b])); + break; CASE(OP_SENDB, BBB): fprintf(out, "SENDB\t\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); print_args(c, out); @@ -342,12 +357,15 @@ codedump(mrb_state *mrb, const mrb_irep *irep, FILE *out) CASE(OP_CALL, Z): fprintf(out, "CALL\n"); break; + CASE(OP_BLKCALL, BB): + fprintf(out, "BLKCALL\t\tR%d\t%d\n", a, b); + break; CASE(OP_SUPER, BB): fprintf(out, "SUPER\t\tR%d\t", a); print_args(b, out); break; CASE(OP_ARGARY, BS): - fprintf(out, "ARGARY\tR%d\t%d:%d:%d:%d (%d)\t", a, + fprintf(out, "ARGARY\tR%d\t%d:%d:%d:%d (%d)", a, (b>>11)&0x3f, (b>>10)&0x1, (b>>5)&0x1f, @@ -356,40 +374,53 @@ codedump(mrb_state *mrb, const mrb_irep *irep, FILE *out) print_lv_a(mrb, irep, a, out); break; CASE(OP_ENTER, W): - fprintf(out, "ENTER\t\t%d:%d:%d:%d:%d:%d:%d (0x%x)\n", + fprintf(out, "ENTER\t\t%d:%d:%d:%d:%d:%d:%d:%d (0x%x)\n", MRB_ASPEC_REQ(a), MRB_ASPEC_OPT(a), MRB_ASPEC_REST(a), MRB_ASPEC_POST(a), MRB_ASPEC_KEY(a), MRB_ASPEC_KDICT(a), - MRB_ASPEC_BLOCK(a), a); + MRB_ASPEC_BLOCK(a), + MRB_ASPEC_NOBLOCK(a), a); break; CASE(OP_KEY_P, BB): - fprintf(out, "KEY_P\t\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + fprintf(out, "KEY_P\t\tR%d\t:%s", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a, out); break; CASE(OP_KEYEND, Z): fprintf(out, "KEYEND\n"); break; CASE(OP_KARG, BB): - fprintf(out, "KARG\t\tR%d\t:%s\t", a, mrb_sym_dump(mrb, irep->syms[b])); + fprintf(out, "KARG\t\tR%d\t:%s", a, mrb_sym_dump(mrb, irep->syms[b])); print_lv_a(mrb, irep, a, out); break; CASE(OP_RETURN, B): - fprintf(out, "RETURN\tR%d\t\t", a); + fprintf(out, "RETURN\tR%d\t", a); print_lv_a(mrb, irep, a, out); break; CASE(OP_RETURN_BLK, B): - fprintf(out, "RETURN_BLK\tR%d\t\t", a); + fprintf(out, "RETURN_BLK\tR%d\t", a); print_lv_a(mrb, irep, a, out); break; + CASE(OP_RETSELF, Z): + fprintf(out, "RETSELF\n"); + break; + CASE(OP_RETNIL, Z): + fprintf(out, "RETNIL\n"); + break; + CASE(OP_RETTRUE, Z): + fprintf(out, "RETTRUE\n"); + break; + CASE(OP_RETFALSE, Z): + fprintf(out, "RETFALSE\n"); + break; CASE(OP_BREAK, B): - fprintf(out, "BREAK\t\tR%d\t\t", a); + fprintf(out, "BREAK\t\tR%d\t", a); print_lv_a(mrb, irep, a, out); break; CASE(OP_BLKPUSH, BS): - fprintf(out, "BLKPUSH\tR%d\t%d:%d:%d:%d (%d)\t", a, + fprintf(out, "BLKPUSH\tR%d\t%d:%d:%d:%d (%d)", a, (b>>11)&0x3f, (b>>10)&0x1, (b>>5)&0x1f, @@ -415,6 +446,12 @@ codedump(mrb_state *mrb, const mrb_irep *irep, FILE *out) CASE(OP_DEF, BB): fprintf(out, "DEF\t\tR%d\t:%s\t(R%d)\n", a, mrb_sym_dump(mrb, irep->syms[b]),a+1); break; + CASE(OP_TDEF, BBB): + fprintf(out, "TDEF\t\tR%d\t:%s\tI[%d]\n", a, mrb_sym_dump(mrb, irep->syms[b]), c); + break; + CASE(OP_SDEF, BBB): + fprintf(out, "SDEF\t\tR%d\t:%s\tI[%d]\n", a, mrb_sym_dump(mrb, irep->syms[b]), c); + break; CASE(OP_UNDEF, B): fprintf(out, "UNDEF\t\t:%s\n", mrb_sym_dump(mrb, irep->syms[a])); break; @@ -422,42 +459,50 @@ codedump(mrb_state *mrb, const mrb_irep *irep, FILE *out) fprintf(out, "ALIAS\t\t:%s\t%s\n", mrb_sym_dump(mrb, irep->syms[a]), mrb_sym_dump(mrb, irep->syms[b])); break; CASE(OP_ADD, B): - fprintf(out, "ADD\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "ADD\t\tR%d\t(R%d)\n", a, a+1); break; CASE(OP_ADDI, BB): - fprintf(out, "ADDI\t\tR%d\t%d\t", a, b); + fprintf(out, "ADDI\t\tR%d\t%d", a, b); print_lv_a(mrb, irep, a, out); break; CASE(OP_SUB, B): - fprintf(out, "SUB\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "SUB\t\tR%d\t(R%d)\n", a, a+1); break; CASE(OP_SUBI, BB): - fprintf(out, "SUBI\t\tR%d\t%d\t", a, b); + fprintf(out, "SUBI\t\tR%d\t%d", a, b); + print_lv_a(mrb, irep, a, out); + break; + CASE(OP_ADDILV, BBB): + fprintf(out, "ADDILV\tR%d\tR%d\t%d", a, b, c); + print_lv_a(mrb, irep, a, out); + break; + CASE(OP_SUBILV, BBB): + fprintf(out, "SUBILV\tR%d\tR%d\t%d", a, b, c); print_lv_a(mrb, irep, a, out); break; CASE(OP_MUL, B): - fprintf(out, "MUL\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "MUL\t\tR%d\t(R%d)\n", a, a+1); break; CASE(OP_DIV, B): - fprintf(out, "DIV\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "DIV\t\tR%d\t(R%d)\n", a, a+1); break; CASE(OP_LT, B): - fprintf(out, "LT\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "LT\t\tR%d\t(R%d)\n", a, a+1); break; CASE(OP_LE, B): - fprintf(out, "LE\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "LE\t\tR%d\t(R%d)\n", a, a+1); break; CASE(OP_GT, B): - fprintf(out, "GT\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "GT\t\tR%d\t(R%d)\n", a, a+1); break; CASE(OP_GE, B): - fprintf(out, "GE\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "GE\t\tR%d\t(R%d)\n", a, a+1); break; CASE(OP_EQ, B): - fprintf(out, "EQ\t\tR%d\tR%d\n", a, a+1); + fprintf(out, "EQ\t\tR%d\t(R%d)\n", a, a+1); break; CASE(OP_ARRAY, BB): - fprintf(out, "ARRAY\t\tR%d\tR%d\t%d", a, a, b); + fprintf(out, "ARRAY\t\tR%d\t%d", a, b); print_lv_a(mrb, irep, a, out); break; CASE(OP_ARRAY2, BBB): @@ -465,15 +510,15 @@ codedump(mrb_state *mrb, const mrb_irep *irep, FILE *out) print_lv_ab(mrb, irep, a, b, out); break; CASE(OP_ARYCAT, B): - fprintf(out, "ARYCAT\tR%d\tR%d\t", a, a+1); + fprintf(out, "ARYCAT\tR%d\t(R%d)", a, a+1); print_lv_a(mrb, irep, a, out); break; CASE(OP_ARYPUSH, BB): - fprintf(out, "ARYPUSH\tR%d\t%d\t", a, b); + fprintf(out, "ARYPUSH\tR%d\t%d", a, b); print_lv_a(mrb, irep, a, out); break; CASE(OP_ARYSPLAT, B): - fprintf(out, "ARYSPLAT\tR%d\t", a); + fprintf(out, "ARYSPLAT\tR%d", a); print_lv_a(mrb, irep, a, out); break; CASE(OP_AREF, BBB): @@ -489,7 +534,7 @@ codedump(mrb_state *mrb, const mrb_irep *irep, FILE *out) print_lv_a(mrb, irep, a, out); break; CASE(OP_INTERN, B): - fprintf(out, "INTERN\tR%d\t\t", a); + fprintf(out, "INTERN\tR%d\t", a); print_lv_a(mrb, irep, a, out); break; CASE(OP_SYMBOL, BB): @@ -499,28 +544,31 @@ codedump(mrb_state *mrb, const mrb_irep *irep, FILE *out) break; CASE(OP_STRING, BB): mrb_assert((irep->pool[b].tt&IREP_TT_NFLAG)==0); - fprintf(out, "STRING\tR%d\tL[%d]\t; %s", a, b, irep->pool[b].u.str); + fprintf(out, "STRING\tR%d\tL[%d]", a, b); + if (irep->pool[b].u.str[0]) { + fprintf(out, "\t; %s", irep->pool[b].u.str); + } print_lv_a(mrb, irep, a, out); break; CASE(OP_STRCAT, B): - fprintf(out, "STRCAT\tR%d\tR%d\t", a, a+1); + fprintf(out, "STRCAT\tR%d\t(R%d)", a, a+1); print_lv_a(mrb, irep, a, out); break; CASE(OP_HASH, BB): - fprintf(out, "HASH\t\tR%d\t%d\t", a, b); + fprintf(out, "HASH\t\tR%d\t%d", a, b); print_lv_a(mrb, irep, a, out); break; CASE(OP_HASHADD, BB): - fprintf(out, "HASHADD\tR%d\t%d\t", a, b); + fprintf(out, "HASHADD\tR%d\t%d", a, b); print_lv_a(mrb, irep, a, out); break; CASE(OP_HASHCAT, B): - fprintf(out, "HASHCAT\tR%d\tR%d\t", a, a+1); + fprintf(out, "HASHCAT\tR%d\t(R%d)", a, a+1); print_lv_a(mrb, irep, a, out); break; CASE(OP_OCLASS, B): - fprintf(out, "OCLASS\tR%d\t\t", a); + fprintf(out, "OCLASS\tR%d\t", a); print_lv_a(mrb, irep, a, out); break; CASE(OP_CLASS, BB): @@ -536,11 +584,11 @@ codedump(mrb_state *mrb, const mrb_irep *irep, FILE *out) print_lv_a(mrb, irep, a, out); break; CASE(OP_SCLASS, B): - fprintf(out, "SCLASS\tR%d\t", a); + fprintf(out, "SCLASS\tR%d", a); print_lv_a(mrb, irep, a, out); break; CASE(OP_TCLASS, B): - fprintf(out, "TCLASS\tR%d\t\t", a); + fprintf(out, "TCLASS\tR%d\t", a); print_lv_a(mrb, irep, a, out); break; CASE(OP_ERR, B): @@ -552,7 +600,7 @@ codedump(mrb_state *mrb, const mrb_irep *irep, FILE *out) } break; CASE(OP_EXCEPT, B): - fprintf(out, "EXCEPT\tR%d\t\t", a); + fprintf(out, "EXCEPT\tR%d\t", a); print_lv_a(mrb, irep, a, out); break; CASE(OP_RESCUE, BB): @@ -560,9 +608,12 @@ codedump(mrb_state *mrb, const mrb_irep *irep, FILE *out) print_lv_ab(mrb, irep, a, b, out); break; CASE(OP_RAISEIF, B): - fprintf(out, "RAISEIF\tR%d\t\t", a); + fprintf(out, "RAISEIF\tR%d\t", a); print_lv_a(mrb, irep, a, out); break; + CASE(OP_MATCHERR, B): + fprintf(out, "MATCHERR\tR%d\n", a); + break; CASE(OP_DEBUG, BBB): fprintf(out, "DEBUG\t\t%d\t%d\t%d\n", a, b, c); @@ -639,3 +690,4 @@ mrb_codedump_all(mrb_state *mrb, struct RProc *proc) mrb_codedump_all_file(mrb, proc, stdout); #endif } +#undef CASE |
