From 075aa3eeaa9ee798ebcd8781f04a18fbbab7b2fd Mon Sep 17 00:00:00 2001 From: Tomoyuki Sahara Date: Thu, 1 Nov 2012 09:40:56 +0900 Subject: don't print garbage entries. --- src/vm.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/vm.c b/src/vm.c index 953863a0b..fe359be47 100644 --- a/src/vm.c +++ b/src/vm.c @@ -169,6 +169,9 @@ cipush(mrb_state *mrb) mrb->ci->eidx = eidx; mrb->ci->ridx = ridx; mrb->ci->env = 0; + if (mrb->ci + 1 != mrb->ciend) { + mrb->ci[1].mid = 0; + } return mrb->ci; } -- cgit v1.2.3 From 80ed166e9f3f293f166086dc70e766272c342950 Mon Sep 17 00:00:00 2001 From: Tomoyuki Sahara Date: Thu, 1 Nov 2012 14:54:04 +0900 Subject: show all callinfo's. --- src/error.c | 1 + src/vm.c | 3 --- tools/mruby/mruby.c | 6 +++--- 3 files changed, 4 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/error.c b/src/error.c index 858c70820..430728db0 100644 --- a/src/error.c +++ b/src/error.c @@ -189,6 +189,7 @@ exc_debug_info(mrb_state *mrb, struct RObject *exc) mrb_callinfo *ci = mrb->ci; mrb_code *pc = ci->pc; + mrb_obj_iv_set(mrb, exc, mrb_intern(mrb, "ciidx"), mrb_fixnum_value(ci - mrb->cibase)); ci--; while (ci >= mrb->cibase) { if (ci->proc && !MRB_PROC_CFUNC_P(ci->proc)) { diff --git a/src/vm.c b/src/vm.c index fe359be47..953863a0b 100644 --- a/src/vm.c +++ b/src/vm.c @@ -169,9 +169,6 @@ cipush(mrb_state *mrb) mrb->ci->eidx = eidx; mrb->ci->ridx = ridx; mrb->ci->env = 0; - if (mrb->ci + 1 != mrb->ciend) { - mrb->ci[1].mid = 0; - } return mrb->ci; } diff --git a/tools/mruby/mruby.c b/tools/mruby/mruby.c index 2037ee2a8..5a97adc8a 100644 --- a/tools/mruby/mruby.c +++ b/tools/mruby/mruby.c @@ -166,14 +166,14 @@ static void showcallinfo(mrb_state *mrb) { mrb_callinfo *ci; + mrb_int ciidx; const char *filename, *sep; int i; printf("trace:\n"); - for (i = 1; &mrb->cibase[i] < mrb->ciend; i++) { + ciidx = mrb_fixnum(mrb_obj_iv_get(mrb, mrb->exc, mrb_intern(mrb, "ciidx"))); + for (i = 1; i <= ciidx; i++) { ci = &mrb->cibase[i]; - if (ci->mid == 0) - break; if (MRB_PROC_CFUNC_P(ci->proc)) filename = "(cfunc)"; -- cgit v1.2.3