From 9e3ad7844425d96baf856d3da1975756504b2aa5 Mon Sep 17 00:00:00 2001 From: Fred Drake Date: Tue, 3 Jul 2001 23:39:52 +0000 Subject: This change adjusts the profiling/tracing support so that the common path (with no profile/trace function) through eval_code2() and eval_frame() avoids several checks. In the common cases of calls, returns, and exception propogation, eval_code2() and eval_frame() used to test two values in the thread-state: the profiling function and the tracing function. With this change, a flag is set in the thread-state if either of these is active, allowing a single check to suffice when both are NULL. This also simplifies the code needed when either function is in use but is already active (to avoid profiling/tracing the profiler/tracer); the flag is set to 0 when the profile/trace code is entered, allowing the same check to suffice for "already in the tracer" for call/return/ exception events. --- Python/pystate.c | 1 + 1 file changed, 1 insertion(+) (limited to 'Python/pystate.c') diff --git a/Python/pystate.c b/Python/pystate.c index 192c4c14f6..cca1e7cdbe 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -109,6 +109,7 @@ PyThreadState_New(PyInterpreterState *interp) tstate->recursion_depth = 0; tstate->ticker = 0; tstate->tracing = 0; + tstate->use_tracing = 0; tstate->dict = NULL; -- cgit v1.2.1