ruby/yjit
Alan Wu dccfab0c53
YJIT: Always abandon the block when gen_branch() or defer_compilation() fails
In [1], we started checking for gen_branch failures, but I made two
crucial mistakes. One, defer_compilation() had the same issue as
gen_branch() but wasn't checked. Two, returning None from a codegen
function does not throw away the block. Checking how gen_single_block()
handles codegen functions, you can see that None terminates the block
with an exit, but does not overall return an Err. This handling is fine
for unimplemented instructions, for example, but incorrect in case
gen_branch() fails. The missing branch essentially corrupts the
block; adding more code after a missing branch doesn't correct the code.

Always abandon the block when defer_compilation() or gen_branch() fails.

[1]: cb661d7d82
Fixup: [1]
2024-11-08 14:09:55 -05:00
..
bindgen YJIT: Implement specialization for no-op {Kernel,Numeric}#dup 2024-10-22 11:30:35 -04:00
src YJIT: Always abandon the block when gen_branch() or defer_compilation() fails 2024-11-08 14:09:55 -05:00
.gitignore
Cargo.lock Bump capstone from 0.11.0 to 0.12.0 in /yjit (#10094) 2024-02-25 19:02:00 -08:00
Cargo.toml YJIT: Tweak a comment a little [ci skip] 2024-07-18 13:03:17 -07:00
not_gmake.mk YJIT: Fix shared/static library symbol leaks 2023-01-27 12:28:09 -05:00
yjit.mk Propagate jobserver FDs to cargo and rustc [ci skip] 2024-03-22 22:05:58 +09:00