<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/vm_exec.h, branch v4.0.2</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>ZJIT: Fix -Wpedantic warning in C99 mode when built with YJIT</title>
<updated>2025-12-05T20:49:25+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2025-12-03T03:11:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=3269ae1b0d1aaa78d12b1527a2f6b095e148c5d3'/>
<id>3269ae1b0d1aaa78d12b1527a2f6b095e148c5d3</id>
<content type='text'>
&gt; insns.def:857:5: error: assigning to 'rb_zjit_func_t' (aka 'unsigned
&gt; long (*)(struct rb_execution_context_struct *, struct
&gt; rb_control_frame_struct *, unsigned long (*)(struct
&gt; rb_execution_context_struct *, struct rb_control_frame_struct *))') from
&gt; 'void *' converts between void pointer and function pointer
&gt; [-Werror,-Wpedantic]
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
&gt; insns.def:857:5: error: assigning to 'rb_zjit_func_t' (aka 'unsigned
&gt; long (*)(struct rb_execution_context_struct *, struct
&gt; rb_control_frame_struct *, unsigned long (*)(struct
&gt; rb_execution_context_struct *, struct rb_control_frame_struct *))') from
&gt; 'void *' converts between void pointer and function pointer
&gt; [-Werror,-Wpedantic]
</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>
<entry>
<title>Use `UNDEF_P`</title>
<updated>2024-01-30T05:48:59+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2024-01-30T05:48:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=361b3efe164bd753258c7a86aff5141f1fd3ecf6'/>
<id>361b3efe164bd753258c7a86aff5141f1fd3ecf6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>YJIT: No need to RESTORE_REG now that we reject tailcalls</title>
<updated>2024-01-30T03:19:25+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2024-01-29T21:42:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=db5d9429a0d30213915fa36f2c6641065d01854a'/>
<id>db5d9429a0d30213915fa36f2c6641065d01854a</id>
<content type='text'>
Thanks to Kokubun for noticing.

Follow-up: b0711b1cf152afad0a480ee2f9bedd142a0d24ac
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Thanks to Kokubun for noticing.

Follow-up: b0711b1cf152afad0a480ee2f9bedd142a0d24ac
</pre>
</div>
</content>
</entry>
<entry>
<title>YJIT: Fix tailcall and JIT entry eating up FINISH frames (#9729)</title>
<updated>2024-01-29T17:21:17+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2024-01-29T17:21:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b0711b1cf152afad0a480ee2f9bedd142a0d24ac'/>
<id>b0711b1cf152afad0a480ee2f9bedd142a0d24ac</id>
<content type='text'>
Suppose YJIT runs a rb_vm_opt_send_without_block()
fallback and the control frame stack looks like:

```
will_tailcall_bar [FINISH]
caller_that_used_fallback
```

will_tailcall_bar() runs in the interpreter and sets up a tailcall.
Right before JIT_EXEC() in the `send` instruction, the stack will look like:

```
bar [FINISH]
caller_that_used_fallback
```

Previously, JIT_EXEC() ran bar() in JIT code, which caused the `FINISH`
flag to return to the interpreter instead of to the JIT code running
caller_that_used_fallback(), causing code to run twice and probably
crash. Recent flaky failures on CI about "each stub expects a particular
iseq" are probably due to leaving methods twice in
`test_optimizations.rb`.

Only run JIT code from the interpreter if a new frame is pushed.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Suppose YJIT runs a rb_vm_opt_send_without_block()
fallback and the control frame stack looks like:

```
will_tailcall_bar [FINISH]
caller_that_used_fallback
```

will_tailcall_bar() runs in the interpreter and sets up a tailcall.
Right before JIT_EXEC() in the `send` instruction, the stack will look like:

```
bar [FINISH]
caller_that_used_fallback
```

Previously, JIT_EXEC() ran bar() in JIT code, which caused the `FINISH`
flag to return to the interpreter instead of to the JIT code running
caller_that_used_fallback(), causing code to run twice and probably
crash. Recent flaky failures on CI about "each stub expects a particular
iseq" are probably due to leaving methods twice in
`test_optimizations.rb`.

Only run JIT code from the interpreter if a new frame is pushed.</pre>
</div>
</content>
</entry>
<entry>
<title>Clean up OPT_STACK_CACHING (#8132)</title>
<updated>2023-07-28T00:27:05+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2023-07-28T00:27:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=38be9a9b72d606024eb94900ed834b08493a1518'/>
<id>38be9a9b72d606024eb94900ed834b08493a1518</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>YJIT: Fallback send instructions to vm_sendish (#8106)</title>
<updated>2023-07-24T20:51:46+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2023-07-24T20:51:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=cef60e93e6db859b47c818f745be809feb04ae48'/>
<id>cef60e93e6db859b47c818f745be809feb04ae48</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove obsoleted USE_INSNS_COUNTER macro for now</title>
<updated>2023-07-11T21:36:36+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2023-07-11T21:35:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=d45118aaafe4e1e8409c13dea462fbbaf8b4cb8c'/>
<id>d45118aaafe4e1e8409c13dea462fbbaf8b4cb8c</id>
<content type='text'>
I don't use that these days. I'd like to remove this to ease a change
I'm writing. I'll resurrect this when I need this again.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I don't use that these days. I'd like to remove this to ease a change
I'm writing. I'll resurrect this when I need this again.
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor jit_func_t and jit_exec</title>
<updated>2023-03-16T17:42:17+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2023-03-16T17:41:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=9947574b9cad74fbf04fa44d49647c591590c511'/>
<id>9947574b9cad74fbf04fa44d49647c591590c511</id>
<content type='text'>
I closed https://github.com/ruby/ruby/pull/7543, but part of the diff
seems useful regardless, so I extracted it.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I closed https://github.com/ruby/ruby/pull/7543, but part of the diff
seems useful regardless, so I extracted it.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove obsoleted MJIT_HEADER macro</title>
<updated>2023-03-07T06:29:35+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2023-03-07T06:03:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=290e26c729a083f4461d2497099d9e7eee814228'/>
<id>290e26c729a083f4461d2497099d9e7eee814228</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
