mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	update comments
This commit is contained in:
		
							parent
							
								
									176101d660
								
							
						
					
					
						commit
						fec42da1ab
					
				
					 1 changed files with 12 additions and 5 deletions
				
			
		|  | @ -2491,20 +2491,23 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) | |||
| 			   - (TOP, SECOND) = (WHY_{RETURN,CONTINUE}), retval | ||||
| 			   - TOP = WHY_*; no retval below it | ||||
| 			   - (TOP, SECOND, THIRD) = exc_info() | ||||
| 			     (FOURTH, FITH, SIXTH) = previous exception for EXCEPT_HANDLER | ||||
| 			   Below them is EXIT, the context.__exit__ bound method. | ||||
| 			   In the last case, we must call | ||||
| 			     EXIT(TOP, SECOND, THIRD) | ||||
| 			   otherwise we must call | ||||
| 			     EXIT(None, None, None) | ||||
| 
 | ||||
| 			   In all cases, we remove EXIT from the stack, leaving | ||||
| 			   the rest in the same order. | ||||
| 			   In the first two cases, we remove EXIT from the | ||||
| 			   stack, leaving the rest in the same order.  In the | ||||
| 			   third case, we shift the bottom 3 values of the | ||||
| 			   stack down, and replace the empty spot with NULL. | ||||
| 
 | ||||
| 			   In addition, if the stack represents an exception, | ||||
| 			   *and* the function call returns a 'true' value, we | ||||
| 			   "zap" this information, to prevent END_FINALLY from | ||||
| 			   re-raising the exception.  (But non-local gotos | ||||
| 			   should still be resumed.) | ||||
| 			   push WHY_SILENCED onto the stack.  END_FINALLY will | ||||
| 			   then not re-raise the exception.  (But non-local | ||||
| 			   gotos should still be resumed.) | ||||
| 			*/ | ||||
| 
 | ||||
| 			PyObject *exit_func; | ||||
|  | @ -2544,7 +2547,11 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) | |||
| 				stack_pointer[-7] = tb; | ||||
| 				stack_pointer[-6] = exc; | ||||
| 				stack_pointer[-5] = tp; | ||||
| 				/* UNWIND_EXCEPT_BLOCK will pop this off. */ | ||||
| 				FOURTH() = NULL; | ||||
| 				/* We just shifted the stack down, so we have
 | ||||
| 				   to tell the except handler block that the | ||||
| 				   values are lower than it expects. */ | ||||
| 				block = &f->f_blockstack[f->f_iblock - 1]; | ||||
| 				assert(block->b_type == EXCEPT_HANDLER); | ||||
| 				block->b_level--; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Benjamin Peterson
						Benjamin Peterson