mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 21:51:50 +00:00 
			
		
		
		
	Port from the Python 2.4 branch, patches for SF bug # 900092,
hotshot.stats.load.
This commit is contained in:
		
							parent
							
								
									f09582eeda
								
							
						
					
					
						commit
						e2eca0b709
					
				
					 3 changed files with 18 additions and 8 deletions
				
			
		|  | @ -97,6 +97,7 @@ def test_raise(): | |||
|                      (-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 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throw) | |||
| 
 | ||||
| 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…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Barry Warsaw
						Barry Warsaw