ruby-trunk-changes r65775 - r65789

今日は主に fork 後の子プロセスでも MJIT が有効になるようにする変更などがありました。

normal: r65775 2018-11-18 10:37:41 +0900

vm_core.h の関数マクロ rb_thread_set_current_raw() と rb_thread_set_current() を static inline な関数として書きなおしています。今どきのコンパイラなら性能への影響はないから inline 関数使ったほうがいいよね、とのこと。

svn: r65776 2018-11-18 10:37:45 +0900

r65775 のインデントのタブを空白に展開。

normal: r65777 2018-11-18 10:37:46 +0900

nogvl_wait_for_single_fd() で到達しないはずの switch 文の default 節に assert(3) で異常終了させてたのを VM_UNREACHABLE() を使うように修正しています。

svn: r65778 2018-11-18 10:37:46 +0900

version.h の日付更新。

normal: r65779 2018-11-18 12:37:04 +0900

r65777 の変更で io.c に VM_UNREACHABLE() の定義が必要になったので #include "vm_core.h" を追加しています。

nobu: r65780 2018-11-18 13:21:52 +0900

r65779 の変更で io.c から vm_core.h への依存関係が増えたので common.mk の依存関係を更新しています。

normal: r65781 2018-11-18 13:34:52 +0900

rb_postponed_job_flush() で ec->interrupt_mask から退避しておくマスクされた割り込みのビットフラグを保持する変数を unsigned long から rb_atomic_t 型に変更しています。interrupt_mask の型が rb_atomic_t なのでそれにそろえています。

k0kubun: r65782 2018-11-18 17:22:30 +0900

MJIT のテストのテストメソッドのひとつを適切な単語を使うように修正しています。

k0kubun: r65783 2018-11-18 17:22:46 +0900

mjit_worker.c のコメントの typo 修正。

k0kubun: r65784 2018-11-18 17:23:05 +0900

thread.c の rb_fiber_atfork() の prototype 宣言の前に mjit.c というコメントがありましたが、rb_fiber_atfork() は cont.c で定義されていて無関係なのでコメントを削除しています。

k0kubun: r65785 2018-11-18 17:25:48 +0900

これまで fork で子プロセスが作られると mjit_child_after_fork() で MJIT が無効になるようにしていましたが、子プロセスでも MJIT worker thread を起動しなおして独立した MJIT が有効になるようにしています。また fork() 前に親プロセスで一時的に MJIT worker のコンパイルを止めて mutex を取ったまま子プロセスが起動されないようにしています。これでいくつか fork して子プロセスで主な処理をするようなプログラムでも MJIT の効果が得られますが、それぞれの子プロセスで別々にコンパイルするので、起動直後の負荷が重くなるかも。

svn: r65786 2018-11-18 17:25:54 +0900

r65785 のインデントのタブを空白に展開。

k0kubun: r65787 2018-11-18 17:44:16 +0900

r65785 で追加した MJIT の子プロセスでのテストが CI で失敗したようで、デバッグ用にメッセージを追加しています。

k0kubun: r65788 2018-11-18 18:22:48 +0900

r65785 で追加した MJIT のテストの出力のチェックの行の位置を厳密にチェックしないようにしています。環境によって順番が変わることがあったのかな。

k0kubun: r65789 2018-11-18 18:32:29 +0900

wercker.yml で test-all のテバッグのため -v オプションを追加してどこで止まっているのかわかるようにしています。