mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	GH-108866: Guarantee forward progress in executors. (GH-113006)
This commit is contained in:
		
							parent
							
								
									9898e61041
								
							
						
					
					
						commit
						956023826a
					
				
					 7 changed files with 19 additions and 21 deletions
				
			
		| 
						 | 
				
			
			@ -2352,20 +2352,17 @@ dummy_func(
 | 
			
		|||
 | 
			
		||||
            PyCodeObject *code = _PyFrame_GetCode(frame);
 | 
			
		||||
            _PyExecutorObject *executor = (_PyExecutorObject *)code->co_executors->executors[oparg&255];
 | 
			
		||||
            int original_oparg = executor->vm_data.oparg | (oparg & 0xfffff00);
 | 
			
		||||
            JUMPBY(1-original_oparg);
 | 
			
		||||
            frame->instr_ptr = next_instr;
 | 
			
		||||
            Py_INCREF(executor);
 | 
			
		||||
            if (executor->execute == _PyUOpExecute) {
 | 
			
		||||
                current_executor = (_PyUOpExecutorObject *)executor;
 | 
			
		||||
                GOTO_TIER_TWO();
 | 
			
		||||
            }
 | 
			
		||||
            frame = executor->execute(executor, frame, stack_pointer);
 | 
			
		||||
            if (frame == NULL) {
 | 
			
		||||
                frame = tstate->current_frame;
 | 
			
		||||
            next_instr = executor->execute(executor, frame, stack_pointer);
 | 
			
		||||
            frame = tstate->current_frame;
 | 
			
		||||
            if (next_instr == NULL) {
 | 
			
		||||
                goto resume_with_error;
 | 
			
		||||
            }
 | 
			
		||||
            goto enter_tier_one;
 | 
			
		||||
            stack_pointer = _PyFrame_GetStackPointer(frame);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        replaced op(_POP_JUMP_IF_FALSE, (unused/1, cond -- )) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue