ruby-trunk-changes r58341 - r58351

TracePoint と stack overflow の不具合の再修正や to_r による暗黙の変換の最適化などがありました。

ko1: r58341 2017-04-14 01:19:46 +0900

テストで生成した Thread の終了を待っていないものがあったので Thread#join して待つようにしています。

svn: r58342 2017-04-14 01:19:46 +0900

version.h の日付更新。

ko1: r58343 2017-04-14 01:32:20 +0900

r58341 で空のディレクトリ enc/unicode/data/ が追加されてしまっていたので削除しています。

nobu: r58344 2017-04-14 09:45:48 +0900

r58336 の tool/git-refresh の再修正。 Solaris 10 で cd -P が失敗するとそこで shell が処理を止めてしまうそうなので sub shell に実行させるようにかっこを追加しています。 [ruby-dev:50074] [Bug #13433]

nobu: r58345 2017-04-14 09:45:49 +0900

tool/rbinstall.rb で default gem のインストール処理で Gem::Specification#files は見ないので files を作る処理を削除しています。 [ruby-core:80667] [Bug #13428]

ko1: r58346 2017-04-14 11:19:39 +0900

r58334 で追加した TracePoint で監視中の stack overflow のテストのタイムアウトを 60秒に伸ばしています。

mrkn: r58347 2017-04-14 14:19:12 +0900

object.c の convert_type() でメソッド呼び出しのための ID を組み込みのものを使うように特別扱いされている to_xxx メソッド群に to_r メソッドを追加しています。 Time#subsec でも内部で呼ばれるのでパフォーマンスが改善されるみたいですね。 https://github.com/ruby/ruby/pull/1582 [ruby-core:80665] [Bug #13426]

svn: r58348 2017-04-14 14:19:12 +0900

r58347 で新規追加されたベンチマークスクリプトsvn property 設定。

ko1: r58349 2017-04-14 16:46:11 +0900

r58334 の TracePoint のイベントを stack overflow の処理中は止める変更を再修正しています。 ruby_vm_event_flags をクリアしてもだめだったみたいで、TracePoint の return のイベント呼び出しの関数 hook_before_rewind() に state を渡してそこで SystemStackError 例外の発生中だったらスキップするようにしています。

nobu: r58350 2017-04-14 17:33:08 +0900

rb_yield_values() を include/ruby/ruby.h でマクロとして定義して、可能なら __builtin_constant_p() などを利用して引数の数をチェックして 2つなら rb_yield_values2() の呼び出しとして展開するようにしています。 r58339 のような最適化を自動でやってしまおうってことですね。

nobu: r58351 2017-04-14 19:03:43 +0900

拡張ライブラリ socket の IPSocket#inspect を独自に定義して、アドレス情報も含めるようにしています。