gh-139109: JIT _EXIT_TRACE to ENTER_EXECUTOR rather than _DEOPT (GH-141573)

This commit is contained in:
Ken Jin 2025-11-16 04:19:41 +08:00 committed by GitHub
parent 85f3009d75
commit ed73c909f2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 44 additions and 8 deletions

View file

@ -12263,7 +12263,7 @@ JUMP_TO_LABEL(error);
opcode == RERAISE || opcode == CLEANUP_THROW ||
opcode == PUSH_EXC_INFO || opcode == INTERPRETER_EXIT);
_PyFrame_SetStackPointer(frame, stack_pointer);
int full = !_PyJit_translate_single_bytecode_to_trace(tstate, frame, next_instr, stop_tracing);
int full = !_PyJit_translate_single_bytecode_to_trace(tstate, frame, next_instr, stop_tracing ? _DEOPT : 0);
stack_pointer = _PyFrame_GetStackPointer(frame);
if (full) {
LEAVE_TRACING();
@ -12309,7 +12309,7 @@ JUMP_TO_LABEL(error);
assert(IS_JIT_TRACING());
int opcode = next_instr->op.code;
_PyFrame_SetStackPointer(frame, stack_pointer);
_PyJit_translate_single_bytecode_to_trace(tstate, frame, NULL, true);
_PyJit_translate_single_bytecode_to_trace(tstate, frame, NULL, _EXIT_TRACE);
stack_pointer = _PyFrame_GetStackPointer(frame);
LEAVE_TRACING();
_PyFrame_SetStackPointer(frame, stack_pointer);