diff options
author | Benjamin Peterson <benjamin@python.org> | 2012-12-24 17:53:30 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2012-12-24 17:53:30 (GMT) |
commit | 6f0c94df50f30aac8d9a1a9f85adcda1e63d0ab7 (patch) | |
tree | 980e5da9a561b91405f2d6824f6dae53a205e605 /Python/ceval.c | |
parent | 6a7a49c6318afe8a54fe6dda2dd321af2a275295 (diff) | |
download | cpython-6f0c94df50f30aac8d9a1a9f85adcda1e63d0ab7.zip cpython-6f0c94df50f30aac8d9a1a9f85adcda1e63d0ab7.tar.gz cpython-6f0c94df50f30aac8d9a1a9f85adcda1e63d0ab7.tar.bz2 |
improve tracing performance when f_trace is NULL (closes #16672)
Patch by Xavier de Gaye.
Diffstat (limited to 'Python/ceval.c')
-rw-r--r-- | Python/ceval.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/Python/ceval.c b/Python/ceval.c index 32c203e..5f6f35c 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, |