ruby-trunk-changes r58328 - r58340

今日は TracePoint を使っている時の stack overflow で SEGV する不具合の修正や Array#sort の最適化などがありました。

nobu: r58328 2017-04-12 23:47:50 +0900

GC 中かどうか調べる関数 rb_during_gc() に rb_thread_t を受け取る rb_threadptr_during_gc() というのを追加して thread.c の stack overflow チェック時に呼ぶのをこちらにしています。 during_gc はマクロで rb_objspace_t::flags をチェックするので ObjectSpace が分かれると別になるんですね。将来の Guild 対応用かな。

stomar: r58329 2017-04-13 03:07:32 +0900

lib/unicode_normalize/*.rb や template/unicode_norm_gen.tmpl で rdoc が余計なドキュメントを生成しないように nodoc タグのコメントを追加しています。

svn: r58330 2017-04-13 03:07:33 +0900

version.h の日付更新。

stomar: r58331 2017-04-13 04:49:48 +0900

lib/unicode_normalize.rb の rdoc 用コメント? の体裁を修正しています。

rhe: r58332 2017-04-13 15:43:17 +0900

ObjectSpace.memsize_of でオブジェクトが消費しているメモリ量を返すための Array 版の関数 rb_ary_memsize() で ARY_CAPA() マクロを利用して shared 状態の配列を考慮するようにしています。といっても shared 版だと共有してるから和を取ると合計サイズは大きめに出てしまうんですかね。

mrkn: r58333 2017-04-13 16:22:35 +0900

Array#sort で要素が Float の時に比較を rb_float_cmp() を直接呼んでメソッド呼び出しを抑制する最適化を行なっています。 https://github.com/ruby/ruby/pull/1539 [ruby-dev:50023] [Bug #13340]

nobu: r58334 2017-04-13 16:38:23 +0900

ruby_thread_stack_overflow() の先頭で TracePoint のイベント発生を抑制するフラグを操作して stack overflow の検査中に SEGV してしまう不具合を修正しています。 [ruby-core:80662] [Bug #13425]

nobu: r58335 2017-04-13 16:52:05 +0900

r58325 の tool/git-refresh の修正では Solaris 10 でのエラーが直らなかったので expr コマンドの引数をなにやら修正しています。なるほど expr コマンドでパターンマッチができるんですね。 [ruby-dev:50070] [Bug #13424]

nobu: r58336 2017-04-13 17:08:04 +0900

r58335 のさらに追加で tool/git-refresh の修正。 cd -P オプションが可能なら使うようにしています。

mrkn: r58337 2017-04-13 17:09:06 +0900

benchmark/bm_array_sort_float.rb に Array#sort の要素が Float だった時のベンチマークスクリプトを追加しています。 [ruby-dev:50023] [Bug #13340]

svn: r58338 2017-04-13 17:09:07 +0900

r58337 で追加したベンチマークスクリプトsvn property 設定。

mrkn: r58339 2017-04-13 18:25:38 +0900

Array#sort にブロック渡しされた時に rb_yield_value() で配列オブジェクトを生成して渡していたのを rb_yield_value2() で中間オブジェクトの生成を抑制するようにする最適化を行なっています。 またこれを測定するためのベンチマークスクリプトも追加しています。 https://github.com/ruby/ruby/pull/1544 [ruby-dev:50027] [Bug #13344]

svn: r58340 2017-04-13 18:25:39 +0900

r58339 で新規追加されたファイルの svn property 設定。