diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-04-29 18:55:19 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-04-29 18:55:19 +0900 |
| commit | 7bbda668248d16bbac5010accab29f33ba202454 (patch) | |
| tree | c52616e5961bf6de4eaf793e98a1458017d38724 /src/codegen.c | |
| parent | d3417838d27941171b0edcecc41d80aa204749f2 (diff) | |
| parent | 46d8c08a14cca69cae424e924423c42a462f8ab1 (diff) | |
| download | mruby-7bbda668248d16bbac5010accab29f33ba202454.tar.gz mruby-7bbda668248d16bbac5010accab29f33ba202454.zip | |
Merge pull request #2147 from take-cheeze/dump_line_file
Print file name and line number in codedump if available.
Diffstat (limited to 'src/codegen.c')
| -rw-r--r-- | src/codegen.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/codegen.c b/src/codegen.c index 4c9323695..f9ccf2d48 100644 --- a/src/codegen.c +++ b/src/codegen.c @@ -2687,13 +2687,27 @@ codedump(mrb_state *mrb, mrb_irep *irep) int i; int ai; mrb_code c; + const char *file = NULL, *next_file; + int32_t line; if (!irep) return; printf("irep %p nregs=%d nlocals=%d pools=%d syms=%d reps=%d\n", irep, irep->nregs, irep->nlocals, (int)irep->plen, (int)irep->slen, (int)irep->rlen); + for (i = 0; i < (int)irep->ilen; i++) { ai = mrb_gc_arena_save(mrb); + + next_file = mrb_debug_get_filename(irep, i); + if (next_file && file != next_file) { + printf("file: %s\n", next_file); + file = next_file; + } + line = mrb_debug_get_line(irep, i); + if (line != -1) { + printf("%5d ", line); + } + printf("%03d ", i); c = irep->iseq[i]; switch (GET_OPCODE(c)) { |
