<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/yjit/src/backend, branch v4.0.3</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>JIT: Move EC offsets to jit_bindgen_constants</title>
<updated>2025-12-18T21:43:45+00:00</updated>
<author>
<name>John Hawthorn</name>
<email>john@hawthorn.email</email>
</author>
<published>2025-12-18T20:31:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=73e930f9f911cf71ecb416c3112a7818bae41cd6'/>
<id>73e930f9f911cf71ecb416c3112a7818bae41cd6</id>
<content type='text'>
Co-authored-by: Alan Wu &lt;alanwu@ruby-lang.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Co-authored-by: Alan Wu &lt;alanwu@ruby-lang.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>YJIT: Use `mem::take` over `drain(..).collect()`</title>
<updated>2025-10-14T22:16:07+00:00</updated>
<author>
<name>Alan Wu</name>
<email>alanwu@ruby-lang.org</email>
</author>
<published>2025-10-14T22:16:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=57bb7268843831ed8cd701b0fc109d9ed856206e'/>
<id>57bb7268843831ed8cd701b0fc109d9ed856206e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Share more code with YJIT in jit.c (#14520)</title>
<updated>2025-09-12T20:34:55+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashi.kokubun@shopify.com</email>
</author>
<published>2025-09-12T20:34:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=d3cb347a40ef789f37f5a4723ecb3ada7e8605a9'/>
<id>d3cb347a40ef789f37f5a4723ecb3ada7e8605a9</id>
<content type='text'>
* ZJIT: Share more code with YJIT in jit.c

* Fix ZJIT references to JIT</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* ZJIT: Share more code with YJIT in jit.c

* Fix ZJIT references to JIT</pre>
</div>
</content>
</entry>
<entry>
<title>YJIT: Tiny refactors (#14505)</title>
<updated>2025-09-10T20:37:17+00:00</updated>
<author>
<name>Stan Lo</name>
<email>stan.lo@shopify.com</email>
</author>
<published>2025-09-10T20:37:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=23c60e185ea7e74f0eebc27119184fb1ed844856'/>
<id>23c60e185ea7e74f0eebc27119184fb1ed844856</id>
<content type='text'>
Addressed some suggestions from clippy that made sense to me.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Addressed some suggestions from clippy that made sense to me.</pre>
</div>
</content>
</entry>
<entry>
<title>YJIT: Fix `mismatched_lifetime_syntaxes`, new in Rust 1.89.0</title>
<updated>2025-08-11T19:49:14+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2025-08-11T18:31:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=6e3790b17f1b58d67616ef1f9b899bc4af91d334'/>
<id>6e3790b17f1b58d67616ef1f9b899bc4af91d334</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>YJIT: x86: Fix panic writing 32-bit number with top bit set</title>
<updated>2025-06-11T10:49:49+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2025-06-10T11:52:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=e5c7f1695e8cf774d073e7b103c1d9289cad56ee'/>
<id>e5c7f1695e8cf774d073e7b103c1d9289cad56ee</id>
<content type='text'>
Previously, `asm.mov(m32, imm32)` panicked when `imm32 &gt; 0x80000000`. It
attempted to split imm32 into a register before doing the store, but
then the register size didn't match the destination size.

Instead of splitting, use the `MOV r/m32, imm32` form which works for
all 32-bit values. Adjust asserts that assumed that all forms undergo
sign extension, which is not true for this case.

See: 54edc930f9f0a658da45cfcef46648d1b6f82467
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, `asm.mov(m32, imm32)` panicked when `imm32 &gt; 0x80000000`. It
attempted to split imm32 into a register before doing the store, but
then the register size didn't match the destination size.

Instead of splitting, use the `MOV r/m32, imm32` form which works for
all 32-bit values. Adjust asserts that assumed that all forms undergo
sign extension, which is not true for this case.

See: 54edc930f9f0a658da45cfcef46648d1b6f82467
</pre>
</div>
</content>
</entry>
<entry>
<title>YJIT: Rename get_temp_regs2() back to get_temp_regs() (#12866)</title>
<updated>2025-03-06T15:52:49+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2025-03-06T15:52:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=bb91c303bad5fcdd59b73ca1a1923f71c7efdbfd'/>
<id>bb91c303bad5fcdd59b73ca1a1923f71c7efdbfd</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>YJIT: A64: Remove assert that trips when OOM at page boundary</title>
<updated>2025-01-30T00:09:39+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2025-01-29T19:59:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=5a7089fc03fb77da6f0f6c005a9a0ef655660cff'/>
<id>5a7089fc03fb77da6f0f6c005a9a0ef655660cff</id>
<content type='text'>
With a well-timed OOM around a page switch in the backend, it can return
RetryOnNextPage twice and crash due to the assert. (More places can
signal OOM now since VirtualMem tracks Rust malloc heap size for
--yjit-mem-size.)

Return error in these cases instead of crashing.

Fixes: https://github.com/Shopify/ruby/issues/566
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
With a well-timed OOM around a page switch in the backend, it can return
RetryOnNextPage twice and crash due to the assert. (More places can
signal OOM now since VirtualMem tracks Rust malloc heap size for
--yjit-mem-size.)

Return error in these cases instead of crashing.

Fixes: https://github.com/Shopify/ruby/issues/566
</pre>
</div>
</content>
</entry>
<entry>
<title>YJIT: Spill/load argument registers to reuse blocks (#12287)</title>
<updated>2024-12-09T18:02:40+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2024-12-09T18:02:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=cff031253f228ed28a00d95935e42c68a85f34ad'/>
<id>cff031253f228ed28a00d95935e42c68a85f34ad</id>
<content type='text'>
* YJIT: Spill/load argument registers to reuse blocks

* Mention the immediate function name

* Explain the context behind spill/load operations</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* YJIT: Spill/load argument registers to reuse blocks

* Mention the immediate function name

* Explain the context behind spill/load operations</pre>
</div>
</content>
</entry>
<entry>
<title>YJIT: Pass method arguments using registers (#11280)</title>
<updated>2024-08-28T00:04:43+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2024-08-28T00:04:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=5b129c899a5cf3bf8253eaaf7fbc8331b1e55f75'/>
<id>5b129c899a5cf3bf8253eaaf7fbc8331b1e55f75</id>
<content type='text'>
* YJIT: Pass method arguments using registers

* s/at_current_insn/at_compile_target/

* Implement register shuffle</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* YJIT: Pass method arguments using registers

* s/at_current_insn/at_compile_target/

* Implement register shuffle</pre>
</div>
</content>
</entry>
</feed>
