ruby-trunk-changes r64182 - r64194

今日は mswin 版の環境での MJIT で precompiled header を利用するようにする変更などがありました。

k0kubun: r64182 2018-08-05 00:12:30 +0900

MJIT 用の mjit_header.h を tool/transform_mjit_header.rb を使って arch 毎のヘッダに変換するルールを common.mk から Makefile.in に移動しています。 mswin では cl.exe の仕様でマクロの置換を抑制できない? ため min header の生成をあきらめ、ビルド時に precompiled header を生成するとのこと。けどルールの変更は min header 作成を抑制しただけにみえるけどこの後追加の変更があるのかな。

svn: r64183 2018-08-05 00:12:31 +0900

version.h の日付更新。

normal: r64184 2018-08-05 05:34:19 +0900

IO の multi thread での gets と close が競合した時のテスト test_race_gets_and_close のタイムアウトを伸ばしています。 CI の失敗の様子をみるためみたいです。 http://ci.rvm.jp/results/trunk@P895/1190369

normal: r64185 2018-08-05 05:38:48 +0900

thread.c の Thread 間の協調のために使う pipe からの読み込み consume_communication_pipe() で read(2) が指定したサイズより短い量の読み込みをした場合は追加の読み込みをしないようにしています。パフォーマンス改善のためみたいです。

normal: r64186 2018-08-05 07:58:08 +0900

Thread#raise のテストで Thread に例外を送出後 Thread.pass して Thread が停止する余地を与えるようにしています。こうしないと終了前の Thread がたまってテストでリソースを圧迫するそうです。

normal: r64187 2018-08-05 08:33:38 +0900

IO.select でイベントの検出漏れがないか確認するテストが繰り返し Thread を生成するため非常に重いので、 Thread は使いまわすように書きかえて、かわりにループ回数を増やしています。ついでに(?) MALLOC_ARENA_MAX などの環境変数も設定してメモリ使用量を抑えるようにしているようです。

k0kubun: r64188 2018-08-05 08:53:41 +0900

r64182 の続きで、ここで mswin 環境での MJIT 用の precompiled header 生成をするようにしているようです。バージョン番号を含む rb_mjit_header-xxx.pch みたいなファイル名で作るようです。

k0kubun: r64189 2018-08-05 12:12:09 +0900

mjit.c で mswin 版の precompiled header を利用する MJIT で利用するため変数宣言と初期化をプラットフォームで分岐するようにしています。

k0kubun: r64190 2018-08-05 13:37:59 +0900

MJIT の mswin 版で JIT コンパイル時に precompiled header を読み込ませるコンパイルオプションを追加するようにしています。

k0kubun: r64191 2018-08-05 13:48:18 +0900

mjit.c の preprocessor の分岐をまとめるため関数の位置を移動しています。

k0kubun: r64192 2018-08-05 14:34:37 +0900

r64188 で mswin 環境で precompiled header を生成するようにした時に object file も作られるのでこれもリンクするようにしています。

normal: r64193 2018-08-05 17:56:52 +0900

threa_pthread.c の native_sleep() で SIGCHLD シグナル処理のための pipe の fd を返却する処理を GVL を再獲得した後に行うように順序を変更しています。パフォーマンスの改善のためみたいですね。

normal: r64194 2018-08-05 17:56:57 +0900

Process.wait と SIGCHLD の処理のテストで MJIT が有効な時に MJIT 用 worker のぶんの SIGCHLD のせいで(?) テストが失敗することがあるので余分なシグナル処理を許容するようにしているようです。