Mercurial > cpython-lru_cache-weakref
diff Python/pystate.c @ 18326:e427afb5637f legacy-trunk
Revise the interface to the profiling and tracing support for the
Python interpreter.
This change adds two new C-level APIs: PyEval_SetProfile() and
PyEval_SetTrace(). These can be used to install profile and trace
functions implemented in C, which can operate at much higher speeds
than Python-based functions. The overhead for calling a C-based
profile function is a very small fraction of a percent of the overhead
involved in calling a Python-based function.
The machinery required to call a Python-based profile or trace
function been moved to sysmodule.c, where sys.setprofile() and
sys.setprofile() simply become users of the new interface.
As a side effect, SF bug #436058 is fixed; there is no longer a
_PyTrace_Init() function to declare.
| author | Fred Drake <fdrake@acm.org> |
|---|---|
| date | Wed, 27 Jun 2001 19:19:46 +0000 |
| parents | d96ce9708c00 |
| children | 3b295ce2705f |
line wrap: on
line diff
--- a/Python/pystate.c Wed Jun 27 19:18:03 2001 +0000 +++ b/Python/pystate.c Wed Jun 27 19:19:46 2001 +0000 @@ -120,8 +120,10 @@ tstate->exc_value = NULL; tstate->exc_traceback = NULL; - tstate->sys_profilefunc = NULL; - tstate->sys_tracefunc = NULL; + tstate->c_profilefunc = NULL; + tstate->c_tracefunc = NULL; + tstate->c_profileobj = NULL; + tstate->c_traceobj = NULL; HEAD_LOCK(); tstate->next = interp->tstate_head; @@ -152,8 +154,10 @@ ZAP(tstate->exc_value); ZAP(tstate->exc_traceback); - ZAP(tstate->sys_profilefunc); - ZAP(tstate->sys_tracefunc); + tstate->c_profilefunc = NULL; + tstate->c_tracefunc = NULL; + ZAP(tstate->c_profileobj); + ZAP(tstate->c_traceobj); }
