summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro Matz Matsumoto <[email protected]>2013-03-05 00:32:38 +0900
committerYukihiro Matz Matsumoto <[email protected]>2013-03-05 00:32:38 +0900
commit6be56ef1fbd21b7791e484006ee5b6e342310812 (patch)
treec30fa85001dac9373d9751e65d86dab564db47b4 /src
parent0fd14e53a217ff8618e102080754dd8dbd9f271d (diff)
downloadmruby-6be56ef1fbd21b7791e484006ee5b6e342310812.tar.gz
mruby-6be56ef1fbd21b7791e484006ee5b6e342310812.zip
save/restore arena index for each codedump iteration
Diffstat (limited to 'src')
-rw-r--r--src/codegen.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/codegen.c b/src/codegen.c
index d2640904a..74b6e01f4 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -2375,13 +2375,14 @@ codedump(mrb_state *mrb, int n)
{
#ifdef ENABLE_STDIO
mrb_irep *irep = mrb->irep[n];
- int i;
+ int i, ai;
mrb_code c;
if (!irep) return;
printf("irep %d nregs=%d nlocals=%d pools=%d syms=%d\n", n,
irep->nregs, irep->nlocals, irep->plen, irep->slen);
for (i=0; i<irep->ilen; i++) {
+ ai = mrb_gc_arena_save(mrb);
printf("%03d ", i);
c = irep->iseq[i];
switch (GET_OPCODE(c)) {
@@ -2682,6 +2683,7 @@ codedump(mrb_state *mrb, int n)
GETARG_A(c), GETARG_B(c), GETARG_C(c));
break;
}
+ mrb_gc_arena_restore(mrb, ai);
}
printf("\n");
#endif