Commit d25b2f3
committed
W22: YIELD_FROM deopt — Alex explicit one-case bypass
Removes YIELD_FROM from isSupportedOpcode in builder.cpp so that
functions containing the YIELD_FROM bytecode are skipped by the JIT
and run via the interpreter fallback path. The W22 crash class
(refcount-pass-init at n_in==0 generator-resume blocks, surfaced by
the W32 --wiring fix) is therefore not reachable through compiled
code.
5 architectural fix iterations (v1 OWNED / v2 per-reg / v3 per-reg
no-add_copy / v3-clean-pydebug / v4-A BORROWED) did not converge on
a clean repair: each candidate fixed Criterion 1 SIGABRT 134 but
introduced a different failure mode (immortal-refcount underflow,
'live twice' assertion, SIGSEGV 139). Empirical symmetric test
against the pre-R4 C++ baseline (5e981c5) confirmed the bug class
is inherited from the original CinderX extraction — same immortal
underflow surfaces in C++ refcount_insertion.cpp on the same
falsifier.
Per Alex L3076, the no-workarounds rule (feedback_no_workarounds.md
'always root-cause, never bail-out/deopt', extended 2026-04-22 by
'Quality > speed, always') is bypassed here under explicit author
authority for THIS ONE CASE only. The rule STANDS for future cases.
The bypass is marked-in-code with sourced + auditable attribution
per gatekeeper L3076 review framing, so future readers see the
override is not a silent carve-out.
Functions that use YIELD_FROM run correctly via the interpreter
path: pre-fix 'cannot compile … unsupported opcode' is the existing
mechanism for this class, used by many other unsupported opcodes
already.
Compile-check: cmake --build of Python/jit_build/build PASSED clean
(libphoenix_jit.a relinked).
Per supervisor L3076 implementation directive after Alex L3076
authority bypass + gatekeeper L3076 conditional approve.1 parent 4a01bfa commit d25b2f3
1 file changed
Lines changed: 8 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
262 | 262 | | |
263 | 263 | | |
264 | 264 | | |
265 | | - | |
266 | 265 | | |
267 | 266 | | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
268 | 275 | | |
269 | 276 | | |
270 | 277 | | |
| |||
0 commit comments