]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
fix backoff for previous exits
authorKen Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Tue, 28 Oct 2025 11:10:41 +0000 (11:10 +0000)
committerKen Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Tue, 28 Oct 2025 11:10:41 +0000 (11:10 +0000)
Python/optimizer.c

index 166d73d4409ca8545f32e368352731ab2710a8da..4a61509112ba0985d0ff59e181fdcfea0ffec42f 100644 (file)
@@ -172,10 +172,9 @@ _PyOptimizer_Optimize(
     else {
         executor->vm_data.code = NULL;
     }
-    if (chain_depth > 0) {
-        _PyExitData *prev_exit = tstate->interp->jit_state.prev_exit;
-        assert(prev_exit != NULL);
-        prev_exit->executor = executor;;
+    _PyExitData *prev_exit = tstate->interp->jit_state.prev_exit;
+    if (prev_exit != NULL) {
+        prev_exit->executor = executor;
     }
     executor->vm_data.chain_depth = chain_depth;
     assert(executor->vm_data.valid);
@@ -981,7 +980,7 @@ _PyJit_TryInitializeTracing(PyThreadState *tstate, _PyInterpreterFrame *frame, _
     tstate->interp->jit_state.initial_func = (PyFunctionObject *)Py_NewRef(_PyFrame_GetFunction(frame));
     tstate->interp->jit_state.prev_exit = exit;
     tstate->interp->jit_state.initial_stack_depth = curr_stackdepth;
-    tstate->interp->jit_state.initial_chain_depth = chain_depth % MAX_CHAIN_DEPTH;
+    tstate->interp->jit_state.initial_chain_depth = chain_depth;
     tstate->interp->jit_state.prev_instr_frame = frame;
     tstate->interp->jit_state.dependencies_still_valid = true;
     tstate->interp->jit_state.specialize_counter = 0;