ruby-trunk-changes 2020-07-13

今日は MJIT 時の invokebuiltin 命令の最適化などがありました。

[99a9c3fe2e] Nobuyoshi Nakada 2020-07-12 05:09:48 UTC

Time.new や Time.utc で timezone を指定して作成した時に Time#yday と Time#wday が正しくセットされていなかった不具合を修正しています。 [ruby-core:99127] [Bug #17024]

[162d08b854] Nobuyoshi Nakada 2020-07-12 14:40:27 UTC

tool/sync_default_gems.rb で default gem の upstream から commit を cherry pick する時に conflict したら自動でエディタを起動できるようにしています。

[6cd600ef69] Nobuyoshi Nakada 2020-07-12 14:59:18 UTC

tool/sync_default_gems.rb の cherry pick 時に conflict を無視するファイルのパターンを増やしています。

[49cb2345c6] Nobuyoshi Nakada 2020-07-12 15:30:44 UTC

tool/sync_default_gems.rb に list サブコマンドを追加して対応しているライブラリ名のリストを検索/表示する機能を追加しています。

[6c8af6b6f2] Nobuyoshi Nakada 2020-07-12 15:31:12 UTC

tool/sync_default_gems.rb のコメント部分に対応している upstream のリポジトリ一覧を書いてたのを消しています。コメントを増やし忘れるので list で表示できるようにしたって感じですかね。

[5d02c1dd14] git 2020-07-12 15:35:38 UTC

version.h の日付更新

[f66e0212ef] 卜部昌平 2020-07-09 12:43:42 UTC

組み込みメソッドの ruby 実装から C 関数を呼び出す時に使う構造体 struct rb_builtin_function に compiler というメンバーを追加して MJIT 有効時にメソッド毎の invokebuiltin 命令専用の関数を生成してその関数ポインタを埋め込むようにしています。コンパイル時に決定できるため不要な分岐を削るため。

[9721f477c7] 卜部昌平 2020-07-10 02:49:50 UTC

ruby 実装の組み込みメソッドから C の式を評価する Primitive.cexpr! でを MJIT で JIT コンパイルする時に、関数を作ってそれを呼ぶのもやめて MJIT で生成されるコードに直接埋め込むようにしています。

[2363a16e9a] 卜部昌平 2020-07-10 05:54:01 UTC

5783d84a170356a30b7cc578493880eb67ebda56 で生成する C のコードに関数ポインタに対応する関数名をコメントで埋め込むようにしています。

[4506f6119a] 卜部昌平 2020-07-10 09:31:26 UTC

9721f477c7f33d64af94fad4a1ca51f739b0b08f で出力する C コードで関数ポインタを format 文字列の指示子 %p で埋め込んでたのを PRIdPTR を使うようにしています。

[802bcd3ec8] 卜部昌平 2020-07-11 05:25:51 UTC

9721f477c7f33d64af94fad4a1ca51f739b0b08f の変更で rb_int_bit_length() に static 修飾子が残っててエラーになったのを修正しています。

[7e536b3be2] 卜部昌平 2020-07-12 05:53:54 UTC

f66e0212efe4f6572d5e81741e831ab735cc2fee の invokebuiltin 命令の MJIT 下での最適化の変更をリファクタリングして、MJIT による JIT コンパイル用と通常の VM での実行時のコードをうまく分離するようにしています。

[16bc9bf7e8] Kazuhiro NISHIYAMA 2020-07-13 02:33:40 UTC

lib/uri/common.rb の rdoc 用コメント内のリンクが http を使ってたのを https に変更しています。

[927fe2422f] 卜部昌平 2020-07-13 03:27:53 UTC

f66e0212efe4f6572d5e81741e831ab735cc2fee で導入した invokebuiltin 命令の MJIT 時の個別関数の引数に stack_size を追加して VM stack から引数を特定するのに STACK_ADDR_FROM_TOP() を使わないようにしています。

[2e5a711f47] 卜部昌平 2020-07-13 03:45:26 UTC

common.mk の mjit_compile.inc の依存関係に ruby_vm/views/_mjit_compile_invokebuiltin.erb を追加しています。

[d99d96cc6d] Takashi Kokubun 2020-07-13 05:10:57 UTC

GitHub Actions の MJIT テストでコマンドラインオプションに --jit-min-call=5 を追加しています。 https://github.com/ruby/ruby/pull/3313

[c2a6295ec0] Nobuyoshi Nakada 2020-07-11 15:09:04 UTC

標準添付ライブラリ mkmf.rb で MakeMakefile をトップレベルに直接 include していたのを無名 Module を挟んで、各種メソッドを private メソッドにしています。そんなに大きな問題はない気はするけどまあ不要に public メソッドを増やすのはあんまりよくないってことかな。 [ruby-core:98391] [Bug #16896]