ruby/yjit
Alan Wu 188688a53e YJIT: ARM64: Fix long jumps to labels
Previously, with Code GC, YJIT panicked while trying to emit a B.cond
instruction with an offset that is not encodable in 19 bits. This only
happens when the code in an assembler instance straddles two pages.

To fix this, when we detect that a jump to a label can land on a
different page, we switch to a fresh new page and regenerate all the
code in the assembler there. We still assume that no one assembler has
so much code that it wouldn't fit inside a fresh new page.

[Bug #19385]

Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
Co-authored-by: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>
2023-02-02 10:05:00 -05:00
..
bindgen YJIT: Handle splat with opt more fully (#7209) 2023-01-31 16:18:56 -05:00
src YJIT: ARM64: Fix long jumps to labels 2023-02-02 10:05:00 -05:00
.gitignore
Cargo.lock YJIT: Instrument global allocations on stats build (#6712) 2022-11-13 12:54:41 -05:00
Cargo.toml YJIT: Use ThinLTO for Rust parts in release mode 2023-01-16 17:32:15 -05:00
not_gmake.mk YJIT: Fix shared/static library symbol leaks 2023-01-27 12:28:09 -05:00
yjit.mk Silence dozens of useless warnings from `nm` on macOS 2023-01-31 19:42:01 +09:00