diff --git a/src/builtin.cmod b/src/builtin.cmod index d1e37495eddffc4bcbf4053f801955783857b9d5..ed22a1844a2f67fda19f734657834907259a7cc2 100644 --- a/src/builtin.cmod +++ b/src/builtin.cmod @@ -2555,6 +2555,13 @@ PIKECLASS backtrace_frame CVAR struct pike_string *filename; CVAR INT_TYPE lineno; +#ifdef PROFILING + PIKEVAR bignum total_time; + /* FIXME: self_time */ +#endif + + DECLARE_STORAGE; + INIT { THIS->pc = NULL; @@ -2932,6 +2939,12 @@ void low_backtrace(struct Pike_interpreter_struct *i) bf = OBJ2_BACKTRACE_FRAME(o); +#ifdef PROFILING + push_int64(get_cpu_time() - (i->unlocked_time + f->start_time)); + bf->total_time = Pike_sp[-1]; + Pike_sp--; +#endif + if ((bf->prog = f->context->prog)) { add_ref(bf->prog); bf->pc = f->pc;