]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Fix double-initialization
authorKen Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Sun, 21 Sep 2025 11:50:06 +0000 (12:50 +0100)
committerKen Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Sun, 21 Sep 2025 11:50:06 +0000 (12:50 +0100)
Python/bytecodes.c
Python/ceval_macros.h
Python/executor_cases.c.h
Python/optimizer.c

index 8d3464586e2942518fabe20d2bba08641998b91e..c1912300bda1416b262c489a375cffa928e15004 100644 (file)
@@ -5490,8 +5490,8 @@ dummy_func(
                 }
                 _PyExecutorObject *previous_executor = _PyExecutor_FromExit(exit);
                 assert(tstate->current_executor == (PyObject *)previous_executor);
-                int chain_depth = previous_executor->vm_data.chain_depth + 1;
-                _PyJIT_InitializeTracing(tstate, frame, target, STACK_LEVEL(), chain_depth);
+                // Set chain_depth to 0 because we want to keep tracing whatever we see next.
+                _PyJIT_InitializeTracing(tstate, frame, target, STACK_LEVEL(), 0);
                 GOTO_TIER_ONE(target, 1);
             }
             exit->executor = executor;
index 0e7e5e81a7f9ff41c91e30342c432f70f9869545..48f08868d0b07aeb67a0d15a7bce40f14321848e 100644 (file)
@@ -417,7 +417,6 @@ do {                                                   \
     if (keep_tracing_bit) { \
         assert(next_instr->op.code != ENTER_EXECUTOR); \
         ENTER_TRACING(); \
-        _PyJIT_InitializeTracing(tstate, frame, next_instr, STACK_LEVEL(), 0); \
     } \
     else { \
         LEAVE_TRACING(); \
index efe3c6f52464c17e073f3b3d31695bbd4271fa80..a8224df7f55e2bbd39ccf1504a13326b4cc99746 100644 (file)
                 _PyExecutorObject *previous_executor = _PyExecutor_FromExit(exit);
                 stack_pointer = _PyFrame_GetStackPointer(frame);
                 assert(tstate->current_executor == (PyObject *)previous_executor);
-                int chain_depth = previous_executor->vm_data.chain_depth + 1;
                 _PyFrame_SetStackPointer(frame, stack_pointer);
-                _PyJIT_InitializeTracing(tstate, frame, target, STACK_LEVEL(), chain_depth);
+                _PyJIT_InitializeTracing(tstate, frame, target, STACK_LEVEL(), 0);
                 stack_pointer = _PyFrame_GetStackPointer(frame);
                 GOTO_TIER_ONE(target, 1);
             }
index f59beda5f8a4270f3dce9b095a0edb167dc6b65e..597bc6d2dc1bc154c34bf17c33003f3a5f9f877b 100644 (file)
@@ -805,7 +805,7 @@ _PyJIT_InitializeTracing(PyThreadState *tstate, _PyInterpreterFrame *frame, _Py_
         lltrace = *python_lltrace - '0';  // TODO: Parse an int and all that
     }
     DPRINTF(2,
-        "Optimizing %s (%s:%d) at byte offset %d\n",
+        "Tracing %s (%s:%d) at byte offset %d\n",
         PyUnicode_AsUTF8(code->co_qualname),
         PyUnicode_AsUTF8(code->co_filename),
         code->co_firstlineno,