ruby-trunk-changes 2020-04-06

今日は MJIT 用の VM コード生成テンプレートのリファクタリングなどがありました。JIT 時に C のコードを生成する C のコードを生成するための erb テンプレートなのでどっちの(ビルド時生成の C なのか実行時生成の C なのか ruby 部分なのか)見失わないように読むのが大変。

[0e02c3b7c2] Nobuyoshi Nakada 2020-04-05 12:20:51 UTC

6e76f0a16f51e1bd038354cc6d5b4935889776ec の lib/.document の bundler/vendor を除外するためのルール変更を revert して lib/bundler/vendor/.document を追加して空にしておくことで除外させるように変更しています。

[ba3eccd9b5] Derek Argueta 2020-04-05 20:56:11 UTC

include/ruby/thread_native.h のコメントの typo 修正。

[a7e7000387] git 2020-04-05 23:29:38 UTC

version.h の日付更新

[f984975c4d] Takashi Kokubun 2020-04-06 07:45:42 UTC

MJIT 用の VM コード生成テンプレート(これはインタプリタビルド時にビルドされる C コード生成用のもので、ここで生成される C コードが JIT 時にコンパイルすべき C コードを生成している、という感じ……)で生成する C コード(これはビルド時にビルドされる部分)のネストした if 文を1つにまとめるリファクタリング

[1a33845215] Takashi Kokubun 2020-04-06 08:31:10 UTC

同じくテンプレート tool/ruby_vm/views/_mjit_compile_send.erb で生成する C コードで send 系命令を JIT する時に実行時生成する C コードのリファクタリング(たぶん)。変数名の変更や不要なブロック({...})の削除など。

[4f802828f4] Takashi Kokubun 2020-04-06 08:42:31 UTC

同じく tool/ruby_vm/views/_mjit_compile_send.erb で生成する C コードが JIT 用に生成する C コードに埋め込む sp の変更量を計算するのに sp_inc_of_sendish() という関数を利用するようにするリファクタリング

[928bb17770] Takashi Kokubun 2020-04-06 08:50:12 UTC

4f802828f4a5ba4c92b78faa6ecf61fb76a1c900 の変更で sp_inc_of_sendish() の戻り値を明示的に int にキャストして格納するようにして警告除去しています。

[3194cd36e2] Takashi Kokubun 2020-04-06 08:49:05 UTC

VM 用コード生成のテンプレートで pc_moved_p という変数の初期化に TRUE/FALSE マクロを使ってたのを true/false を使うようにしています。また宣言位置を tool/ruby_vm/views/_mjit_compile_pc_and_sp.erb に移動。生成後のソースコードからみて内側のスコープに狭めているんだと思います。

[b66d7d9be5] Takashi Kokubun 2020-04-06 09:00:22 UTC

tool/ruby_vm/views/_mjit_compile_send.erb で生成する C コードが JIT 用の C コードを生成する時に stack_size という変数を宣言してたのが不要とのことで削除しています。