<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/zjit/src/backend/arm64, branch v4.0.4</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>Revert "ZJIT: Allow ccalls above 7 arguments"</title>
<updated>2025-12-16T19:53:31+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2025-12-16T19:53:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=f3d1557d5c04d7bc0bfa931869fbb35d14592c53'/>
<id>f3d1557d5c04d7bc0bfa931869fbb35d14592c53</id>
<content type='text'>
This reverts commit 2f151e76b5dc578026706b31f054d5caf5374b05.

The SP decrement (push) before the call do not match up with
the pops after the call, so registers were restored incorrectly.

Code from:

    ./miniruby --zjit-call-threshold=1 --zjit-dump-disasm -e 'p Time.new(1992, 9, 23, 23, 0, 0, :std)'

    str x11, [sp, #-0x10]!
    str x12, [sp, #-0x10]!
    stur x7, [sp]              # last argument
    mov x0, x20
    mov x7, x6
    mov x6, x5
    mov x5, x4
    mov x4, x3
    mov x3, x2
    mov x2, x1
    ldur x1, [x29, #-0x20]
    mov x16, #0xccfc
    movk x16, #0x2e7, lsl #16
    movk x16, #1, lsl #32
    blr x16
    ldr x12, [sp], #0x10       # supposed to match str x12, [sp, #-0x10]!, but got last argument
    ldr x11, [sp], #0x10
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 2f151e76b5dc578026706b31f054d5caf5374b05.

The SP decrement (push) before the call do not match up with
the pops after the call, so registers were restored incorrectly.

Code from:

    ./miniruby --zjit-call-threshold=1 --zjit-dump-disasm -e 'p Time.new(1992, 9, 23, 23, 0, 0, :std)'

    str x11, [sp, #-0x10]!
    str x12, [sp, #-0x10]!
    stur x7, [sp]              # last argument
    mov x0, x20
    mov x7, x6
    mov x6, x5
    mov x5, x4
    mov x4, x3
    mov x3, x2
    mov x2, x1
    ldur x1, [x29, #-0x20]
    mov x16, #0xccfc
    movk x16, #0x2e7, lsl #16
    movk x16, #1, lsl #32
    blr x16
    ldr x12, [sp], #0x10       # supposed to match str x12, [sp, #-0x10]!, but got last argument
    ldr x11, [sp], #0x10
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Allow ccalls above 7 arguments (#15312)</title>
<updated>2025-12-12T23:29:02+00:00</updated>
<author>
<name>Aiden Fox Ivey</name>
<email>aiden@aidenfoxivey.com</email>
</author>
<published>2025-12-12T23:29:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=2f151e76b5dc578026706b31f054d5caf5374b05'/>
<id>2f151e76b5dc578026706b31f054d5caf5374b05</id>
<content type='text'>
ZJIT: Add stack support for CCalls</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ZJIT: Add stack support for CCalls</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Re-compile ISEQs invalidated by PatchPoint (#15459)</title>
<updated>2025-12-11T00:07:39+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2025-12-11T00:07:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c7d56e90d381f0bf115a5c76cbef9df6ae19f4c9'/>
<id>c7d56e90d381f0bf115a5c76cbef9df6ae19f4c9</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Use inline format args (#15482)</title>
<updated>2025-12-10T20:30:04+00:00</updated>
<author>
<name>Alex Rocha</name>
<email>9896751+alexcrocha@users.noreply.github.com</email>
</author>
<published>2025-12-10T20:30:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=3640cfe5e0f3ed30f90ae622ef92e6c154213a09'/>
<id>3640cfe5e0f3ed30f90ae622ef92e6c154213a09</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Use the custom iterator</title>
<updated>2025-12-03T21:37:40+00:00</updated>
<author>
<name>Aaron Patterson</name>
<email>tenderlove@ruby-lang.org</email>
</author>
<published>2025-11-26T00:51:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=d7e55f84f2bd62d302b29513d4c4dc8ae9aef96f'/>
<id>d7e55f84f2bd62d302b29513d4c4dc8ae9aef96f</id>
<content type='text'>
This commit uses the custom instruction iterator in arm64 / x86_64
instruction splitting.  Once we introduce basic blocks to LIR, the
custom iterator will ensure that instructions are added to the correct
place.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This commit uses the custom instruction iterator in arm64 / x86_64
instruction splitting.  Once we introduce basic blocks to LIR, the
custom iterator will ensure that instructions are added to the correct
place.
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Use Mem.num_bits in Mem split (#15177)</title>
<updated>2025-11-14T03:02:45+00:00</updated>
<author>
<name>Max Bernstein</name>
<email>rubybugs@bernsteinbear.com</email>
</author>
<published>2025-11-14T03:02:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c92a44ee685fc10ce7cf4f8865d1942eb40d2780'/>
<id>c92a44ee685fc10ce7cf4f8865d1942eb40d2780</id>
<content type='text'>
Fix the

```
write(2, "ruby: ZJIT has panicked. More info to follow...\n", 48) = 48
write(2, "\nthread '&lt;unnamed&gt;' panicked at zjit/src/backend/lir.rs:160:17:\nassertion failed: num_bits &lt;= out_num_bits\n", 107) = 107
```

based on

```
#25 0x0000aaaaaae8fb14 in zjit::backend::lir::Opnd::mem (num_bits=64, base=..., disp=0) at zjit/src/backend/lir.rs:160
#26 zjit::backend::arm64::{impl#3}::arm64_split::split_memory_address (asm=&lt;optimized out&gt;,
    opnd=&lt;error reading variable: Cannot access memory at address 0x0&gt;) at zjit/src/backend/arm64/mod.rs:260
#27 zjit::backend::arm64::{impl#3}::arm64_split::split_load_operand (asm=&lt;optimized out&gt;, opnd=...) at zjit/src/backend/arm64/mod.rs:273
```</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix the

```
write(2, "ruby: ZJIT has panicked. More info to follow...\n", 48) = 48
write(2, "\nthread '&lt;unnamed&gt;' panicked at zjit/src/backend/lir.rs:160:17:\nassertion failed: num_bits &lt;= out_num_bits\n", 107) = 107
```

based on

```
#25 0x0000aaaaaae8fb14 in zjit::backend::lir::Opnd::mem (num_bits=64, base=..., disp=0) at zjit/src/backend/lir.rs:160
#26 zjit::backend::arm64::{impl#3}::arm64_split::split_memory_address (asm=&lt;optimized out&gt;,
    opnd=&lt;error reading variable: Cannot access memory at address 0x0&gt;) at zjit/src/backend/arm64/mod.rs:260
#27 zjit::backend::arm64::{impl#3}::arm64_split::split_load_operand (asm=&lt;optimized out&gt;, opnd=...) at zjit/src/backend/arm64/mod.rs:273
```</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Deduplicate side exits (#15105)</title>
<updated>2025-11-10T15:30:17+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashi.kokubun@shopify.com</email>
</author>
<published>2025-11-10T15:30:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b539cd2a33dae904e55fd8f054349b9ff076793a'/>
<id>b539cd2a33dae904e55fd8f054349b9ff076793a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Allow Store with 8-bit Opnd::Mem</title>
<updated>2025-11-05T04:08:46+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2025-11-05T01:50:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=53f1fc25462dceb93ffd9a481865e8dab5d5fb41'/>
<id>53f1fc25462dceb93ffd9a481865e8dab5d5fb41</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Split LShift in arm64_scratch_split</title>
<updated>2025-11-05T04:08:46+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2025-11-05T01:19:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=d43533a974cfc105a91ba488d779c75036e49bbd'/>
<id>d43533a974cfc105a91ba488d779c75036e49bbd</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Use a shared trampoline across all ISEQs (#15042)</title>
<updated>2025-11-05T00:09:13+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashi.kokubun@shopify.com</email>
</author>
<published>2025-11-05T00:09:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=bd3b44cb0a341878abe0edf65d01b1a48c93f088'/>
<id>bd3b44cb0a341878abe0edf65d01b1a48c93f088</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
