mirror of https://github.com/python/cpython
Port from the Python 2.4 branch, patches for SF bug # 900092,
hotshot.stats.load.
This commit is contained in:
parent
f09582eeda
commit
e2eca0b709
|
@ -97,6 +97,7 @@ test_raise.events = [(0, 'call'),
|
|||
(-3, 'call'),
|
||||
(-2, 'line'),
|
||||
(-2, 'exception'),
|
||||
(-2, 'return'),
|
||||
(2, 'exception'),
|
||||
(3, 'line'),
|
||||
(4, 'line'),
|
||||
|
|
|
@ -12,6 +12,9 @@ What's New in Python 2.5 alpha 1?
|
|||
Core and builtins
|
||||
-----------------
|
||||
|
||||
- SF bug #900092: When tracing (e.g. for hotshot), restore 'return' events for
|
||||
exceptions that cause a function to exit.
|
||||
|
||||
- The implementation of set() and frozenset() was revised to use its
|
||||
own internal data structure. Memory consumption is reduced by 1/3
|
||||
and there are modest speed-ups as well. The API is unchanged.
|
||||
|
|
|
@ -2480,14 +2480,20 @@ fast_block_end:
|
|||
|
||||
fast_yield:
|
||||
if (tstate->use_tracing) {
|
||||
if (tstate->c_tracefunc
|
||||
&& (why == WHY_RETURN || why == WHY_YIELD)) {
|
||||
if (call_trace(tstate->c_tracefunc,
|
||||
tstate->c_traceobj, f,
|
||||
PyTrace_RETURN, retval)) {
|
||||
Py_XDECREF(retval);
|
||||
retval = NULL;
|
||||
why = WHY_EXCEPTION;
|
||||
if (tstate->c_tracefunc) {
|
||||
if (why == WHY_RETURN || why == WHY_YIELD) {
|
||||
if (call_trace(tstate->c_tracefunc,
|
||||
tstate->c_traceobj, f,
|
||||
PyTrace_RETURN, retval)) {
|
||||
Py_XDECREF(retval);
|
||||
retval = NULL;
|
||||
why = WHY_EXCEPTION;
|
||||
}
|
||||
}
|
||||
else if (why == WHY_EXCEPTION) {
|
||||
call_trace_protected(tstate->c_tracefunc,
|
||||
tstate->c_traceobj, f,
|
||||
PyTrace_RETURN);
|
||||
}
|
||||
}
|
||||
if (tstate->c_profilefunc) {
|
||||
|
|
Loading…
Reference in New Issue