]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
fix jit builds
authorKen Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Thu, 6 Nov 2025 08:44:03 +0000 (08:44 +0000)
committerKen Jin <28750310+Fidget-Spinner@users.noreply.github.com>
Thu, 6 Nov 2025 08:44:03 +0000 (08:44 +0000)
Python/executor_cases.c.h
Tools/cases_generator/tier2_generator.py

index e9f101c8c3a4a355adab951ea78f6a24c0eafb85..7e9c672f6c2e986328f0d5791c2c74fb8dcb6aab 100644 (file)
@@ -8,10 +8,6 @@
 #endif
 #define TIER_TWO 2
 
-        #define OFFSET_OF_RETURN_VALUE ((frame->return_offset))
-        #define OFFSET_OF_YIELD_VALUE ((1+INLINE_CACHE_ENTRIES_SEND))
-        #define OFFSET_OF__PUSH_FRAME ((0))
-        #define OFFSET_OF_RETURN_GENERATOR ((frame->return_offset))
 
         case _NOP: {
             break;
         }
 
         case _GUARD_IP__PUSH_FRAME: {
+            #define OFFSET_OF__PUSH_FRAME ((0))
             PyObject *ip = (PyObject *)CURRENT_OPERAND0();
             _Py_CODEUNIT *target = frame->instr_ptr + OFFSET_OF__PUSH_FRAME;
             if (target != (_Py_CODEUNIT *)ip) {
         }
 
         case _GUARD_IP_YIELD_VALUE: {
+            #define OFFSET_OF_YIELD_VALUE ((1+INLINE_CACHE_ENTRIES_SEND))
             PyObject *ip = (PyObject *)CURRENT_OPERAND0();
             _Py_CODEUNIT *target = frame->instr_ptr + OFFSET_OF_YIELD_VALUE;
             if (target != (_Py_CODEUNIT *)ip) {
         }
 
         case _GUARD_IP_RETURN_VALUE: {
+            #define OFFSET_OF_RETURN_VALUE ((frame->return_offset))
             PyObject *ip = (PyObject *)CURRENT_OPERAND0();
             _Py_CODEUNIT *target = frame->instr_ptr + OFFSET_OF_RETURN_VALUE;
             if (target != (_Py_CODEUNIT *)ip) {
         }
 
         case _GUARD_IP_RETURN_GENERATOR: {
+            #define OFFSET_OF_RETURN_GENERATOR ((frame->return_offset))
             PyObject *ip = (PyObject *)CURRENT_OPERAND0();
             _Py_CODEUNIT *target = frame->instr_ptr + OFFSET_OF_RETURN_GENERATOR;
             if (target != (_Py_CODEUNIT *)ip) {
index ab37c4898249279bf7848398f209cf9b26edd22c..c23eb4a50f4a7cc60f7f3fcdd79b6df37d0d18dd 100644 (file)
@@ -194,7 +194,7 @@ def generate_tier2(
     out = CWriter(outfile, 2, lines)
     emitter = Tier2Emitter(out, analysis.labels)
     out.emit("\n")
-    offset_strs: list[tuple[str, str]] = []
+    offset_strs: dict[str, tuple[str, str]] = {}
     for name, uop in analysis.uops.items():
         if not f"_GUARD_IP_{name}" in analysis.uops:
             continue
@@ -213,8 +213,7 @@ def generate_tier2(
                 offset_str = "".join(offset[1:])
                 found = True
         assert offset_str
-        out.emit(f"#define OFFSET_OF_{name} ({offset_str})\n")
-        offset_strs.append((name, offset_str))
+        offset_strs[f"_GUARD_IP_{name}"] = (name, offset_str)
 
     out.emit("\n")
 
@@ -232,6 +231,8 @@ def generate_tier2(
         out.emit(f"case {uop.name}: {{\n")
         declare_variables(uop, out)
         stack = Stack()
+        if name_offset_pair := offset_strs.get(name):
+            out.emit(f"#define OFFSET_OF_{name_offset_pair[0]} ({name_offset_pair[1]})\n")
         stack = write_uop(uop, emitter, stack)
         out.start_line()
         if not uop.properties.always_exits:
@@ -240,7 +241,7 @@ def generate_tier2(
         out.emit("}")
         out.emit("\n\n")
 
-    for name, offset_str in offset_strs:
+    for name, offset_str in offset_strs.values():
         out.emit(f"#undef OFFSET_OF{name}\n")
     out.emit("\n")
     outfile.write("#undef TIER_TWO\n")