<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/zjit/src/hir/tests.rs, 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>ZJIT: Don't mark control-flow opcodes as invalidating locals (#15694)</title>
<updated>2025-12-24T22:37:25+00:00</updated>
<author>
<name>Max Bernstein</name>
<email>rubybugs@bernsteinbear.com</email>
</author>
<published>2025-12-24T22:37:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=3e82da723241b7205dc2b7706c66e9ead1826cde'/>
<id>3e82da723241b7205dc2b7706c66e9ead1826cde</id>
<content type='text'>
jump, branchif, etc don't invalidate locals in the JIT; they might in the interpreter because they can execute arbitrary code, but the JIT side exits before that happens.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
jump, branchif, etc don't invalidate locals in the JIT; they might in the interpreter because they can execute arbitrary code, but the JIT side exits before that happens.</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Fix test failures from line number of `Primitive` shifting</title>
<updated>2025-12-16T03:18:44+00:00</updated>
<author>
<name>Alan Wu</name>
<email>alanwu@ruby-lang.org</email>
</author>
<published>2025-12-16T03:18:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=3b3ab338516c9af009300761382f01a6beff4dd0'/>
<id>3b3ab338516c9af009300761382f01a6beff4dd0</id>
<content type='text'>
This can happen with documentation updates and we don't want
those to trip on ZJIT tests.

Redact the whole name since names like "_bi342" aren't that helpful
anyways.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This can happen with documentation updates and we don't want
those to trip on ZJIT tests.

Redact the whole name since names like "_bi342" aren't that helpful
anyways.
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Show send fallback reason in HIR dump (#15454)</title>
<updated>2025-12-09T20:29:58+00:00</updated>
<author>
<name>Randy Stauner</name>
<email>randy@r4s6.net</email>
</author>
<published>2025-12-09T20:29:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=bd0d08b6d20e4145e472578d47164fcce14c0abf'/>
<id>bd0d08b6d20e4145e472578d47164fcce14c0abf</id>
<content type='text'>
This adds comments to the hir dump output like this:

  v13:BasicObject = SendWithoutBlock v6, :test, v11 # SendFallbackReason: Complex argument passing</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This adds comments to the hir dump output like this:

  v13:BasicObject = SendWithoutBlock v6, :test, v11 # SendFallbackReason: Complex argument passing</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Put keyword bits in callee frame rather than c_args</title>
<updated>2025-12-09T15:19:38+00:00</updated>
<author>
<name>Randy Stauner</name>
<email>randy@r4s6.net</email>
</author>
<published>2025-12-06T02:57:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=f0b288adf7b3550dc5be6a02316c5822ff47ca82'/>
<id>f0b288adf7b3550dc5be6a02316c5822ff47ca82</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Support opt_newarray_send with PACK_BUFFER</title>
<updated>2025-12-09T13:52:05+00:00</updated>
<author>
<name>Max Bernstein</name>
<email>ruby@bernsteinbear.com</email>
</author>
<published>2025-12-04T02:16:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=cb9510f539e12f7c58bf2e74186c6a48b62fec3c'/>
<id>cb9510f539e12f7c58bf2e74186c6a48b62fec3c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Include local variable names in `Get|SetLocal` insn's print value (#15423)</title>
<updated>2025-12-05T22:00:24+00:00</updated>
<author>
<name>Stan Lo</name>
<email>stan001212@gmail.com</email>
</author>
<published>2025-12-05T22:00:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c4c909b538a2114491be0785ec4aa3d26d2916c4'/>
<id>c4c909b538a2114491be0785ec4aa3d26d2916c4</id>
<content type='text'>
ZJIT: Print local variable names GetLocal and SetLocal instructions</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ZJIT: Print local variable names GetLocal and SetLocal instructions</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Add HIR test for VM_OPT_NEWARRAY_SEND_PACK_BUFFER</title>
<updated>2025-12-01T23:19:26+00:00</updated>
<author>
<name>Max Bernstein</name>
<email>ruby@bernsteinbear.com</email>
</author>
<published>2025-11-25T04:37:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b9f1976f2334b4d9f55be5607de408eb7973c188'/>
<id>b9f1976f2334b4d9f55be5607de408eb7973c188</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Standardize method dispatch insns' `recv` field (#15334)</title>
<updated>2025-12-01T18:01:12+00:00</updated>
<author>
<name>Stan Lo</name>
<email>stan001212@gmail.com</email>
</author>
<published>2025-12-01T18:01:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=5f92d6da1e48ce62205858cdcc7e60108e585f5f'/>
<id>5f92d6da1e48ce62205858cdcc7e60108e585f5f</id>
<content type='text'>
ZJIT: Standardize C call related insn fields

- Add `recv` field to `CCall` and `CCallWithFrame` so now all method dispatch
  related instructions have `recv` field, separate from `args` field.
  This ensures consistent pointer arithmetic when generating code for these
  instructions.
- Standardize `recv` field's display position in send related instructions.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
ZJIT: Standardize C call related insn fields

- Add `recv` field to `CCall` and `CCallWithFrame` so now all method dispatch
  related instructions have `recv` field, separate from `args` field.
  This ensures consistent pointer arithmetic when generating code for these
  instructions.
- Standardize `recv` field's display position in send related instructions.</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: For JIT-to-JIT send, avoid loading uninitialized local through EP</title>
<updated>2025-11-25T04:46:06+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2025-11-20T22:25:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=f8ee06901cfec2ebb7340087f039b103e8ab51b3'/>
<id>f8ee06901cfec2ebb7340087f039b103e8ab51b3</id>
<content type='text'>
JIT-to-JIT sends don't blit locals to nil in the callee's
EP memory region because HIR is aware of this initial state and
memory ops are only done when necessary. Previously, we
read from this initialized memory by emitting `GetLocal` in e.g. BBs
that are immediate successor to an entrypoint.

The entry points sets up the frame state properly and we also reload
locals if necessary after an operation that potentially makes the
environment escape. So, listen to the frame state when it's supposed to
be up-to-date (`!local_inval`).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
JIT-to-JIT sends don't blit locals to nil in the callee's
EP memory region because HIR is aware of this initial state and
memory ops are only done when necessary. Previously, we
read from this initialized memory by emitting `GetLocal` in e.g. BBs
that are immediate successor to an entrypoint.

The entry points sets up the frame state properly and we also reload
locals if necessary after an operation that potentially makes the
environment escape. So, listen to the frame state when it's supposed to
be up-to-date (`!local_inval`).
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Add tests for `opt_newarray_send` with target methods redefined</title>
<updated>2025-11-20T22:35:09+00:00</updated>
<author>
<name>Kevin Menard</name>
<email>kevin@nirvdrum.com</email>
</author>
<published>2025-11-20T21:49:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=36f1ab967f4b837dfb9856e1c29dd7ebeed8c3d3'/>
<id>36f1ab967f4b837dfb9856e1c29dd7ebeed8c3d3</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
