diff options
author | Armin Rigo <arigo@tunes.org> | 2006-03-20 09:37:16 (GMT) |
---|---|---|
committer | Armin Rigo <arigo@tunes.org> | 2006-03-20 09:37:16 (GMT) |
commit | 2f58855af4def36979b7c78f9a3d1d0c4b62aea1 (patch) | |
tree | 95150bcbf0f760665c1f9159b075fc2d39f35bab | |
parent | 2c20676e51c92ab69c4d7cf3d152bc6dd12dab49 (diff) | |
download | cpython-2f58855af4def36979b7c78f9a3d1d0c4b62aea1.zip cpython-2f58855af4def36979b7c78f9a3d1d0c4b62aea1.tar.gz cpython-2f58855af4def36979b7c78f9a3d1d0c4b62aea1.tar.bz2 |
Backport of r41629: hotshot generated half-meaningless numbers since the
introduction of C calls profiling events.
-rw-r--r-- | Modules/_hotshot.c | 36 |
1 files changed, 2 insertions, 34 deletions
diff --git a/Modules/_hotshot.c b/Modules/_hotshot.c index 7b570fc..82fedcc 100644 --- a/Modules/_hotshot.c +++ b/Modules/_hotshot.c @@ -846,38 +846,6 @@ get_tdelta(ProfilerObject *self) /* The workhorse: the profiler callback function. */ static int -profiler_callback(ProfilerObject *self, PyFrameObject *frame, int what, - PyObject *arg) -{ - int tdelta = -1; - int fileno; - - if (self->frametimings) - tdelta = get_tdelta(self); - switch (what) { - case PyTrace_CALL: - fileno = get_fileno(self, frame->f_code); - if (fileno < 0) - return -1; - if (pack_enter(self, fileno, tdelta, - frame->f_code->co_firstlineno) < 0) - return -1; - break; - case PyTrace_RETURN: - if (pack_exit(self, tdelta) < 0) - return -1; - break; - default: - /* should never get here */ - break; - } - return 0; -} - - -/* Alternate callback when we want PyTrace_LINE events */ - -static int tracer_callback(ProfilerObject *self, PyFrameObject *frame, int what, PyObject *arg) { @@ -895,7 +863,7 @@ tracer_callback(ProfilerObject *self, PyFrameObject *frame, int what, case PyTrace_RETURN: return pack_exit(self, get_tdelta(self)); - case PyTrace_LINE: + case PyTrace_LINE: /* we only get these events if we asked for them */ if (self->linetimings) return pack_lineno_tdelta(self, frame->f_lineno, get_tdelta(self)); @@ -989,7 +957,7 @@ do_start(ProfilerObject *self) if (self->lineevents) PyEval_SetTrace((Py_tracefunc) tracer_callback, (PyObject *)self); else - PyEval_SetProfile((Py_tracefunc) profiler_callback, (PyObject *)self); + PyEval_SetProfile((Py_tracefunc) tracer_callback, (PyObject *)self); } static void |