<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/rjit_c.rb, branch v3_3_11</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>merge revision(s) f8abd24b1f28998157da1230b231419ef7b81722: [Backport #20522]</title>
<updated>2024-06-05T07:29:17+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2024-06-05T07:28:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=e0fe6f70170924397b957d6cfa84774592b1c809'/>
<id>e0fe6f70170924397b957d6cfa84774592b1c809</id>
<content type='text'>
	Improve YJIT performance warning regression test

	[Bug #20522]
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	Improve YJIT performance warning regression test

	[Bug #20522]
</pre>
</div>
</content>
</entry>
<entry>
<title>RJIT: Distinguish Pointer with Array</title>
<updated>2023-12-22T19:24:04+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2023-12-22T19:20:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=19d082dcfa393e8a5d0282b872ace587ca5cd49a'/>
<id>19d082dcfa393e8a5d0282b872ace587ca5cd49a</id>
<content type='text'>
This is more convenient for accessing those fields.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is more convenient for accessing those fields.
</pre>
</div>
</content>
</entry>
<entry>
<title>RJIT: Update bindgen</title>
<updated>2023-12-22T05:10:19+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2023-12-22T05:10:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=4c6f07eeca54df45cbdd1ab83eafc5a9343482d4'/>
<id>4c6f07eeca54df45cbdd1ab83eafc5a9343482d4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>RJIT: Rename pause/resume to disable/enable</title>
<updated>2023-12-21T22:25:41+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2023-12-21T22:24:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c73959cff40ba0f1d71ea6e3fce19b5f287e8494'/>
<id>c73959cff40ba0f1d71ea6e3fce19b5f287e8494</id>
<content type='text'>
like YJIT. They don't work in the same way yet, but it's nice to make
the naming consistent first so that we will not need to rename them
later.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
like YJIT. They don't work in the same way yet, but it's nice to make
the naming consistent first so that we will not need to rename them
later.
</pre>
</div>
</content>
</entry>
<entry>
<title>RJIT: Share rb_vm_insns_count for vm_insns_count</title>
<updated>2023-12-19T07:55:40+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2023-12-19T07:49:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=eb872d17524f299bdd023f005da38ffcddffa90a'/>
<id>eb872d17524f299bdd023f005da38ffcddffa90a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Thread specific storage APIs</title>
<updated>2023-12-08T04:16:19+00:00</updated>
<author>
<name>Koichi Sasada</name>
<email>ko1@atdot.net</email>
</author>
<published>2023-11-16T17:29:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=352a885a0f1a4d4576c686301ee71ea887a345e5'/>
<id>352a885a0f1a4d4576c686301ee71ea887a345e5</id>
<content type='text'>
This patch introduces thread specific storage APIs
for tools which use `rb_internal_thread_event_hook` APIs.

* `rb_internal_thread_specific_key_create()` to create a tool specific
  thread local storage key and allocate the storage if not available.
* `rb_internal_thread_specific_set()` sets a data to thread and tool
  specific storage.
* `rb_internal_thread_specific_get()` gets a data in thread and tool
  specific storage.

Note that `rb_internal_thread_specific_get|set(thread_val, key)`
can be called without GVL and safe for async signal and safe for
multi-threading (native threads). So you can call it in any internal
thread event hooks. Further more you can call it from other native
threads. Of course `thread_val` should be living while accessing the
data from this function.

Note that you should not forget to clean up the set data.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch introduces thread specific storage APIs
for tools which use `rb_internal_thread_event_hook` APIs.

* `rb_internal_thread_specific_key_create()` to create a tool specific
  thread local storage key and allocate the storage if not available.
* `rb_internal_thread_specific_set()` sets a data to thread and tool
  specific storage.
* `rb_internal_thread_specific_get()` gets a data in thread and tool
  specific storage.

Note that `rb_internal_thread_specific_get|set(thread_val, key)`
can be called without GVL and safe for async signal and safe for
multi-threading (native threads). So you can call it in any internal
thread event hooks. Further more you can call it from other native
threads. Of course `thread_val` should be living while accessing the
data from this function.

Note that you should not forget to clean up the set data.
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "Revert "Remove SHAPE_CAPACITY_CHANGE shapes""</title>
<updated>2023-11-13T23:26:36+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2023-11-10T21:17:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=68869e9bd921e4021a9ee8eee5a36377dd2b2a90'/>
<id>68869e9bd921e4021a9ee8eee5a36377dd2b2a90</id>
<content type='text'>
This reverts commit 5f3fb4f4e397735783743fe52a7899b614bece20.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 5f3fb4f4e397735783743fe52a7899b614bece20.
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "Remove SHAPE_CAPACITY_CHANGE shapes"</title>
<updated>2023-11-10T16:27:49+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2023-11-10T16:27:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=5f3fb4f4e397735783743fe52a7899b614bece20'/>
<id>5f3fb4f4e397735783743fe52a7899b614bece20</id>
<content type='text'>
This reverts commit f6910a61122931e4193bcc0fad18d839c319b720.

We're seeing crashes in the test suite of Shopify's core monolith after
this change.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit f6910a61122931e4193bcc0fad18d839c319b720.

We're seeing crashes in the test suite of Shopify's core monolith after
this change.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove SHAPE_CAPACITY_CHANGE shapes</title>
<updated>2023-11-09T14:25:02+00:00</updated>
<author>
<name>Peter Zhu</name>
<email>peter@peterzhu.ca</email>
</author>
<published>2023-11-08T15:19:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=f6910a61122931e4193bcc0fad18d839c319b720'/>
<id>f6910a61122931e4193bcc0fad18d839c319b720</id>
<content type='text'>
We don't need to create a shape to transition capacity as we can
transition the capacity when the capacity of the SHAPE_IVAR changes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We don't need to create a shape to transition capacity as we can
transition the capacity when the capacity of the SHAPE_IVAR changes.
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor rb_shape_transition_shape_capa out</title>
<updated>2023-11-08T10:02:55+00:00</updated>
<author>
<name>Jean Boussier</name>
<email>byroot@ruby-lang.org</email>
</author>
<published>2023-11-07T17:09:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=d898e8d6f89fba34a9ee5c0e139f38ac807059e6'/>
<id>d898e8d6f89fba34a9ee5c0e139f38ac807059e6</id>
<content type='text'>
Right now the `rb_shape_get_next` shape caller need to
first check if there is capacity left, and if not call
`rb_shape_transition_shape_capa` before it can call `rb_shape_get_next`.

And on each of these it needs to checks if we got a TOO_COMPLEX
back.

All this logic is duplicated in the interpreter, YJIT and RJIT.

Instead we can have `rb_shape_get_next` do the capacity transition
when needed. The caller can compare the old and new shapes capacity
to know if resizing is needed. It also can check for TOO_COMPLEX
only once.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Right now the `rb_shape_get_next` shape caller need to
first check if there is capacity left, and if not call
`rb_shape_transition_shape_capa` before it can call `rb_shape_get_next`.

And on each of these it needs to checks if we got a TOO_COMPLEX
back.

All this logic is duplicated in the interpreter, YJIT and RJIT.

Instead we can have `rb_shape_get_next` do the capacity transition
when needed. The caller can compare the old and new shapes capacity
to know if resizing is needed. It also can check for TOO_COMPLEX
only once.
</pre>
</div>
</content>
</entry>
</feed>
