From: Benjamin Peterson Date: Mon, 24 Dec 2012 17:53:30 +0000 (-0600) Subject: improve tracing performance when f_trace is NULL (closes #16672) X-Git-Tag: v3.4.0a1~1785^2~1 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6f0c94df50f30aac8d9a1a9f85adcda1e63d0ab7;p=python improve tracing performance when f_trace is NULL (closes #16672) Patch by Xavier de Gaye. --- diff --git a/Misc/NEWS b/Misc/NEWS index 6175be1a94..36d305dfb9 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -10,6 +10,8 @@ What's New in Python 3.4.0 Alpha 1? Core and Builtins ----------------- +- Issue #16672: Improve performance tracing performance + - Issue #14470: Remove w9xpopen support per PEP 11. - Issue #9856: Replace deprecation warning with raising TypeError diff --git a/Python/ceval.c b/Python/ceval.c index 32c203ecbc..5f6f35cb54 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1277,7 +1277,8 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) /* line-by-line tracing support */ if (_Py_TracingPossible && - tstate->c_tracefunc != NULL && !tstate->tracing) { + tstate->c_tracefunc != NULL && !tstate->tracing && + f->f_trace != NULL) { int err; /* see maybe_call_line_trace for expository comments */ @@ -3008,7 +3009,7 @@ error: /* Log traceback info. */ PyTraceBack_Here(f); - if (tstate->c_tracefunc != NULL) + if (tstate->c_tracefunc != NULL && f->f_trace != NULL) call_exc_trace(tstate->c_tracefunc, tstate->c_traceobj, f); fast_block_end: @@ -3127,7 +3128,7 @@ fast_yield: } if (tstate->use_tracing) { - if (tstate->c_tracefunc) { + if (tstate->c_tracefunc && f->f_trace != NULL) { if (why == WHY_RETURN || why == WHY_YIELD) { if (call_trace(tstate->c_tracefunc, tstate->c_traceobj, f,