From 7405606f8aa618443e677d50c553e720255396ff Mon Sep 17 00:00:00 2001 From: "Tom Breton (Tehom)" Date: Fri, 6 May 2011 16:38:21 -0400 Subject: [PATCH] When tracing, print frame depth. --- klink.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/klink.c b/klink.c index 80696cf..794dd7e 100644 --- a/klink.c +++ b/klink.c @@ -6436,7 +6436,15 @@ _kt_spagstack special_dynxtnt REF_OPER(invoke_continuation)), envir); } - +/*_ . curr_frame_depth */ +int curr_frame_depth(_kt_spagstack frame) +{ + /* Walk towards root, counting. */ + int count = 0; + for(; frame != 0; frame = frame->next, count++) + { } + return count; +} /*_ , Continuations */ /*_ . Struct */ typedef struct @@ -8498,10 +8506,17 @@ _klink_cycle (klink * sc) default: /* Print tracing */ - klink_push_dyn_binding( sc, K_TRACING, K_F ); - putstr (sc, "\nEval: "); - value = kernel_print_sexp( sc, - cons( sc->next_func, value ), + { + /* Find and print current frame depth */ + int depth = curr_frame_depth (sc->dump); + char * str = sc->strbuff; + snprintf (str, STRBUFFSIZE, "\n%d: ", depth); + putstr (sc, str); + } + klink_push_dyn_binding (sc, K_TRACING, K_F); + putstr (sc, "Eval: "); + value = kernel_print_sexp (sc, + cons (sc->next_func, value), K_INERT); } } -- 2.11.4.GIT