<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/ujit_iface.h, branch master</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>Yet Another Ruby JIT!</title>
<updated>2021-10-20T22:19:31+00:00</updated>
<author>
<name>Jose Narvaez</name>
<email>goyox86@gmail.com</email>
</author>
<published>2021-03-06T23:46:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=4e2eb7695e9b45cb5d2ae757bdb5c2043d78be78'/>
<id>4e2eb7695e9b45cb5d2ae757bdb5c2043d78be78</id>
<content type='text'>
Renaming uJIT to YJIT. AKA s/ujit/yjit/g.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Renaming uJIT to YJIT. AKA s/ujit/yjit/g.
</pre>
</div>
</content>
</entry>
<entry>
<title>uJIT: Add exit counters for leave and refactor stats printout code</title>
<updated>2021-10-20T22:19:30+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2021-03-03T22:31:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=699bf974937464c5e131859bb632ff4414971289'/>
<id>699bf974937464c5e131859bb632ff4414971289</id>
<content type='text'>
Filter out counters that are zero and make it easier to have multiple
printout groups.

On `railsbench`:

```
opt_send_without_block exit reasons:
    se_finish_frame     184809 (100.0%)
```
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Filter out counters that are zero and make it easier to have multiple
printout groups.

On `railsbench`:

```
opt_send_without_block exit reasons:
    se_finish_frame     184809 (100.0%)
```
</pre>
</div>
</content>
</entry>
<entry>
<title>uJIT: add guards for protected opt_send_without_block calls</title>
<updated>2021-10-20T22:19:30+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2021-03-03T21:29:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=8a9ee00a318d25145b3262277864c5599271bb6a'/>
<id>8a9ee00a318d25145b3262277864c5599271bb6a</id>
<content type='text'>
These account for about 12% of the time when we were bailing from calls
in railsbench. `ratio_in_ujit` went up 0.1% with this change.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These account for about 12% of the time when we were bailing from calls
in railsbench. `ratio_in_ujit` went up 0.1% with this change.
</pre>
</div>
</content>
</entry>
<entry>
<title>Runtime counters for bailing from opt_send_without_block</title>
<updated>2021-10-20T22:19:30+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2021-03-02T23:27:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=316f757c44513b43a831f44a1a9b64337b69b181'/>
<id>316f757c44513b43a831f44a1a9b64337b69b181</id>
<content type='text'>
This allows counting things in generated code such as side exits or
different reasons for failing to compile. Runtime counters are exposed
to Ruby as `UJIT.runtime_stats` for ease of reporting and analysis.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This allows counting things in generated code such as side exits or
different reasons for failing to compile. Runtime counters are exposed
to Ruby as `UJIT.runtime_stats` for ease of reporting and analysis.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update ec-&gt;cfp-&gt;pc when hitting a stub.</title>
<updated>2021-10-20T22:19:30+00:00</updated>
<author>
<name>Maxime Chevalier-Boisvert</name>
<email>maxime.chevalierboisvert@shopify.com</email>
</author>
<published>2021-03-02T17:03:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=2e8db8c35e5bb00a2a27657e2d091edf9e27cacd'/>
<id>2e8db8c35e5bb00a2a27657e2d091edf9e27cacd</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>uJIT: Implement opt_getinlinecache</title>
<updated>2021-10-20T22:19:30+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2021-02-25T20:10:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=57977ba30d35f6f9de3d2802d1894e1f0d23286d'/>
<id>57977ba30d35f6f9de3d2802d1894e1f0d23286d</id>
<content type='text'>
* ujit: implement opt_getinlinecache

Aggressively bet that writes to constants don't happen and invalidate
all opt_getinlinecache blocks on any and all constant writes.

Use alignment padding on block_t to track this assumption. No change to
sizeof(block_t).

* Fix compile warnings when not RUBY_DEBUG
* Fix reversed condition
* Switch to st_table to keep track of assumptions

Co-authored-by: Aaron Patterson &lt;aaron.patterson@gmail.com&gt;
Co-authored-by: Maxime Chevalier-Boisvert &lt;maximechevalierb@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* ujit: implement opt_getinlinecache

Aggressively bet that writes to constants don't happen and invalidate
all opt_getinlinecache blocks on any and all constant writes.

Use alignment padding on block_t to track this assumption. No change to
sizeof(block_t).

* Fix compile warnings when not RUBY_DEBUG
* Fix reversed condition
* Switch to st_table to keep track of assumptions

Co-authored-by: Aaron Patterson &lt;aaron.patterson@gmail.com&gt;
Co-authored-by: Maxime Chevalier-Boisvert &lt;maximechevalierb@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix compiled iseq count stat</title>
<updated>2021-10-20T22:19:29+00:00</updated>
<author>
<name>Maxime Chevalier-Boisvert</name>
<email>maxime.chevalierboisvert@shopify.com</email>
</author>
<published>2021-02-16T16:15:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=48736599ace66fe6bd205e3df2979563f04e0a30'/>
<id>48736599ace66fe6bd205e3df2979563f04e0a30</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Tie lifetime of uJIT blocks to iseqs</title>
<updated>2021-10-20T22:19:29+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2021-02-12T22:12:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=c02517bacb0a9441161342a5973a418039955764'/>
<id>c02517bacb0a9441161342a5973a418039955764</id>
<content type='text'>
* Tie lifetime of uJIT blocks to iseqs

   Blocks weren't being freed when iseqs are collected.

* Add rb_dary. Use it for method dependency table

* Keep track of blocks per iseq

  Remove global version_tbl

* Block version bookkeeping fix

* dary -&gt; darray

* free ujit_blocks

* comment about size of ujit_blocks
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Tie lifetime of uJIT blocks to iseqs

   Blocks weren't being freed when iseqs are collected.

* Add rb_dary. Use it for method dependency table

* Keep track of blocks per iseq

  Remove global version_tbl

* Block version bookkeeping fix

* dary -&gt; darray

* free ujit_blocks

* comment about size of ujit_blocks
</pre>
</div>
</content>
</entry>
<entry>
<title>Tally instructions when taking side exists for --ujit-stats</title>
<updated>2021-10-20T22:19:28+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2021-01-27T21:13:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=3c7251b41b8850aab7c64c4885669e9c099d2465'/>
<id>3c7251b41b8850aab7c64c4885669e9c099d2465</id>
<content type='text'>
shopify/ruby#29

Co-authored-by: Maxime Chevalier-Boisvert &lt;maxime.chevalierboisvert@shopify.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
shopify/ruby#29

Co-authored-by: Maxime Chevalier-Boisvert &lt;maxime.chevalierboisvert@shopify.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement --ujit-stats and instructoin counting</title>
<updated>2021-10-20T22:19:27+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2021-01-26T20:21:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b7f93e81dfe6864273707172be92896b54b6053e'/>
<id>b7f93e81dfe6864273707172be92896b54b6053e</id>
<content type='text'>
VM and ujit instruction counting in debug builds.

shopify/ruby#19
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
VM and ujit instruction counting in debug builds.

shopify/ruby#19
</pre>
</div>
</content>
</entry>
</feed>
