diff Python/ceval.c @ 81015:1fb26db7d719

improve tracing performance when f_trace is NULL (closes #16672) Patch by Xavier de Gaye.
author Benjamin Peterson <benjamin@python.org>
date Mon, 24 Dec 2012 11:53:30 -0600
parents bb6fd6f021e7
children cd87afe18ff8
line wrap: on
line diff
--- a/Python/ceval.c	Mon Dec 24 13:17:11 2012 +0200
+++ b/Python/ceval.c	Mon Dec 24 11:53:30 2012 -0600
@@ -1277,7 +1277,8 @@
         /* 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 @@
         /* 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 @@
     }
 
     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,