From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> Date: Thu, 6 Nov 2025 08:44:03 +0000 (+0000) Subject: fix jit builds X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6c77ee38980261bb4e5908d668d191673cac9386;p=thirdparty%2FPython%2Fcpython.git fix jit builds --- diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h index e9f101c8c3a4..7e9c672f6c2e 100644 --- a/Python/executor_cases.c.h +++ b/Python/executor_cases.c.h @@ -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; @@ -7531,6 +7527,7 @@ } 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) { @@ -7544,6 +7541,7 @@ } 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) { @@ -7557,6 +7555,7 @@ } 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) { @@ -7570,6 +7569,7 @@ } 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) { diff --git a/Tools/cases_generator/tier2_generator.py b/Tools/cases_generator/tier2_generator.py index ab37c4898249..c23eb4a50f4a 100644 --- a/Tools/cases_generator/tier2_generator.py +++ b/Tools/cases_generator/tier2_generator.py @@ -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")