]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Merge remote-tracking branch 'upstream/main' into tracing_jit
authorKen Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Mon, 27 Oct 2025 18:27:32 +0000 (18:27 +0000)
committerKen Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Mon, 27 Oct 2025 18:27:32 +0000 (18:27 +0000)
1  2 
Include/internal/pycore_interp_structs.h
Include/internal/pycore_optimizer.h
Lib/test/test_capi/test_opt.py
Python/bytecodes.c
Python/ceval.c
Python/ceval_macros.h
Python/executor_cases.c.h
Python/optimizer.c
Python/pystate.c

Simple merge
Simple merge
Simple merge
diff --cc Python/ceval.c
Simple merge
index 634b949fa59c37c23cc7c21f986b33a8c61bdaaa,8083913b1a1cfc577e25acbb4ac74d18a3e00c81..d4f4a83e13404c0af2da77b78e18bd3eb6f2b79b
@@@ -399,18 -357,12 +399,20 @@@ do 
      next_instr = _Py_jit_entry((EXECUTOR), frame, stack_pointer, tstate); \
      frame = tstate->current_frame;                     \
      stack_pointer = _PyFrame_GetStackPointer(frame);   \
 +    int keep_tracing_bit = (uintptr_t)next_instr & 1;   \
 +    next_instr = (_Py_CODEUNIT *)(((uintptr_t)next_instr) & (~1)); \
      if (next_instr == NULL) {                          \
-         next_instr = frame->instr_ptr;                 \
+         /* gh-140104: The exception handler expects frame->instr_ptr
+             to after this_instr, not this_instr! */ \
+         next_instr = frame->instr_ptr + 1;                 \
          JUMP_TO_LABEL(error);                          \
      }                                                  \
 +    if (keep_tracing_bit) { \
 +        assert(next_instr->op.code != ENTER_EXECUTOR); \
 +        assert(tstate->interp->jit_state.code_curr_size == 2); \
 +        ENTER_TRACING(); \
 +        DISPATCH_NON_TRACING(); \
 +    } \
      DISPATCH();                                        \
  } while (0)
  
Simple merge
Simple merge
Simple merge