From 081450fba284575c463cb80dfa152cd766c3eeb4 Mon Sep 17 00:00:00 2001 From: Nicholas Clark Date: Thu, 11 Feb 2010 13:35:35 +0000 Subject: [PATCH] Convert output_uv_from_av() and output_nv_from_av() to uv_from_av() and uv_from_nv(), moving the output functionality outwards to their caller, write_sub_callers(). --- NYTProf.xs | 32 +++++++++++++++++++++----------- 1 files changed, 21 insertions(+), 11 deletions(-) diff --git a/NYTProf.xs b/NYTProf.xs index 0024a3c..73ee551 100644 --- a/NYTProf.xs +++ b/NYTProf.xs @@ -1002,11 +1002,10 @@ output_tag_int(NYTP_file file, unsigned char tag, unsigned int i) static UV -output_uv_from_av(pTHX_ AV *av, int idx, UV default_uv) +uv_from_av(pTHX_ AV *av, int idx, UV default_uv) { SV **svp = av_fetch(av, idx, 0); UV uv = (!svp || !SvOK(*svp)) ? default_uv : SvUV(*svp); - output_int( out, uv ); return uv; } @@ -1024,11 +1023,10 @@ output_nv(NYTP_file file, NV nv) static NV -output_nv_from_av(pTHX_ AV *av, int idx, NV default_nv) +nv_from_av(pTHX_ AV *av, int idx, NV default_nv) { SV **svp = av_fetch(av, idx, 0); NV nv = (!svp || !SvOK(*svp)) ? default_nv : SvNV(*svp); - output_nv( out, nv ); return nv; } @@ -3227,6 +3225,8 @@ write_sub_callers(pTHX) NV sc[NYTP_SCi_elements]; AV *av = (AV *)SvRV(sv); int trace = (trace_level >= 3); + UV count; + UV depth; unsigned int fid = 0, line = 0; char *fid_line_delim = "["; @@ -3242,16 +3242,26 @@ write_sub_callers(pTHX) /* trim length to effectively hide the [fid:line] suffix */ caller_subname_len = fid_line_start-caller_subname; + count = uv_from_av(aTHX_ av, NYTP_SCi_CALL_COUNT, 0); + sc[NYTP_SCi_CALL_COUNT] = count * 1.0; + sc[NYTP_SCi_INCL_RTIME] = nv_from_av(aTHX_ av, NYTP_SCi_INCL_RTIME, 0.0); + sc[NYTP_SCi_EXCL_RTIME] = nv_from_av(aTHX_ av, NYTP_SCi_EXCL_RTIME, 0.0); + sc[NYTP_SCi_INCL_UTIME] = nv_from_av(aTHX_ av, NYTP_SCi_INCL_UTIME, 0.0); + sc[NYTP_SCi_INCL_STIME] = nv_from_av(aTHX_ av, NYTP_SCi_INCL_STIME, 0.0); + sc[NYTP_SCi_RECI_RTIME] = nv_from_av(aTHX_ av, NYTP_SCi_RECI_RTIME, 0.0); + depth = uv_from_av(aTHX_ av, NYTP_SCi_REC_DEPTH , 0); + sc[NYTP_SCi_REC_DEPTH] = depth * 1.0; + output_tag_int(out, NYTP_TAG_SUB_CALLERS, fid); output_int(out, line); output_str(out, caller_subname, caller_subname_len); - sc[NYTP_SCi_CALL_COUNT] = output_uv_from_av(aTHX_ av, NYTP_SCi_CALL_COUNT, 0) * 1.0; - sc[NYTP_SCi_INCL_RTIME] = output_nv_from_av(aTHX_ av, NYTP_SCi_INCL_RTIME, 0.0); - sc[NYTP_SCi_EXCL_RTIME] = output_nv_from_av(aTHX_ av, NYTP_SCi_EXCL_RTIME, 0.0); - sc[NYTP_SCi_INCL_UTIME] = output_nv_from_av(aTHX_ av, NYTP_SCi_INCL_UTIME, 0.0); - sc[NYTP_SCi_INCL_STIME] = output_nv_from_av(aTHX_ av, NYTP_SCi_INCL_STIME, 0.0); - sc[NYTP_SCi_RECI_RTIME] = output_nv_from_av(aTHX_ av, NYTP_SCi_RECI_RTIME, 0.0); - sc[NYTP_SCi_REC_DEPTH] = output_uv_from_av(aTHX_ av, NYTP_SCi_REC_DEPTH , 0) * 1.0; + output_int(out, count); + output_nv(out, sc[NYTP_SCi_INCL_RTIME]); + output_nv(out, sc[NYTP_SCi_EXCL_RTIME]); + output_nv(out, sc[NYTP_SCi_INCL_UTIME]); + output_nv(out, sc[NYTP_SCi_INCL_STIME]); + output_nv(out, sc[NYTP_SCi_RECI_RTIME]); + output_int(out, depth); output_str(out, called_subname, called_subname_len); /* sanity check - early warning */ -- 1.6.0