ruby-trunk-changes r62473 - r62485

今日は主に thread_pthread.c のリファクタリングや cross compile 用のビルドプロセスの修正などがありました。

normal: r62473 2018-02-19 06:03:13 +0900

マクロ USE_SIGALTSTACK の定義は vm_core.h により詳しい条件分岐したものがあったので、thread.c で定義していたものは削除して #include "vm_core.h" するようにしています。

svn: r62474 2018-02-19 06:03:14 +0900

version.h の日付更新。

normal: r62475 2018-02-19 08:58:30 +0900

thread_pthread.c の MJIT 用スレッドを起動する rb_thread_create_mjit_thread() で pthread_create() 後に pthread_detach() を使っていたのを、pthread_attr_setdetachstate() を使って pthread_attr にフラグセットしてから pthread_create() するようにしています。こっちのほうが排他処理が減るからちょっと効率的だ、とのこと。

normal: r62476 2018-02-19 08:58:35 +0900

r62466 の再修正。 pthread のキャッシュの実装の register_cached_thread_and_wait() で rb_native_cond_t を破棄する rb_native_cond_destroy() の呼び出しを mutex ロックの解放後に移動しています。

normal: r62477 2018-02-19 09:23:00 +0900

thread_pthread.c の MJIT 用スレッドを生成する rb_thread_create_mjit_thread() で pthread_attr_destroy() を呼ぶようにしています。環境によってはこれを呼ばないとリソースの leak がある場合があるみたいです。

normal: r62478 2018-02-19 09:30:43 +0900

r61719 で pthread_attr_init() が利用可能かどうか分岐してたのをやめていましたが、これにより pthrea_attr_t のポインタ型の変数を使ってこれで一度自動変数へのポインタを格納してる書きかたが不要になった(元は分岐してたので NULL で初期化するケースもあった)ので直接引数に &attr のように書くようにしています。 [ruby-core:84758] [Misc #14342]

nobu: r62479 2018-02-19 10:45:17 +0900

template/configure-ext.mk.tmpl で変数 MINIRUBY を展開するところでクオートされていなかったので、cross compile 時にコマンドラインオプションつきになる時に正しく実行されないことがあった不具合を修正しています。 https://github.com/ruby/ruby/pull/1819 [ruby-core:85620] [Bug #14486]

nobu: r62480 2018-02-19 15:28:03 +0900

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

normal: r62484 2018-02-19 18:28:51 +0900

r62466 の pthread cache の変更の再修正。 register_cached_thread_and_wait() でタイムアウトする時刻を end にせっとする処理を native_cond_timeout() という関数にまかせるようにしています。 USE_MONOTONIC_COND が真の時の処理が抜けてたので専用の関数を使うようにしています。

normal: r62485 2018-02-19 18:28:56 +0900

thread_pthread.c の mjit_worker() の警告メッセージの typo 修正。