diff options
| author | Alan Wu <XrXr@users.noreply.github.com> | 2023-02-01 17:25:53 -0500 |
|---|---|---|
| committer | Alan Wu <XrXr@users.noreply.github.com> | 2023-02-02 10:05:00 -0500 |
| commit | 188688a53e7708d25ab80e14d05e70ffcf792e13 (patch) | |
| tree | ebcd8be6970f374b863141d5edfe1730016809af /include/ruby/internal/encoding/transcode.h | |
| parent | 905e12a30ddc26ebcae5d3692687ee555b905f98 (diff) | |
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>
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/7227
Diffstat (limited to 'include/ruby/internal/encoding/transcode.h')
0 files changed, 0 insertions, 0 deletions
