mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +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
12
Python/generated_cases.c.h
generated
12
Python/generated_cases.c.h
generated
|
@ -2328,20 +2328,18 @@
|
|||
CHECK_EVAL_BREAKER();
|
||||
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);
|
||||
DISPATCH();
|
||||
}
|
||||
|
||||
TARGET(EXIT_INIT_CHECK) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue