ruby-trunk-changes r54097 - r54106

今日は整数の文字列化や整数の名前付き capture の最適化などがありました。

normal: r54097 2016-03-14 10:20:14 +0900

拡張ライブラリ openssl の OpenSSL::SSL::SSLContext#setup の rdoc 用コメントにこれが MT-unsafe であることを追記しています。 [ruby-core:73803] [Bug #12069]

naruse: r54098 2016-03-14 13:41:16 +0900

r54092 の rb_fix2str() の LONG_MIN の時の対応を分岐せずに unsigned long に変換するように最適化しています。

nobu: r54099 2016-03-14 16:03:01 +0900

ruby_is_fd_loadable() で読み込みがブロックする可能性がある fd (fifo の時)は -1 を返してそれで分岐するようにして、呼び元で重複して fstat() を呼んでいたのを消して最適化しています。

nobu: r54100 2016-03-14 16:53:39 +0900

正規表現の名前付き capture の格納のために生成する VM の命令列を最適化しています。コミットログをみると命令数が半分くらいになっているのがわかります。うまいこと VM のスタックを使って不要な getglobal やメソッド呼び出しを削っています。AST のノードも少し変更されていますね。

duerst: r54101 2016-03-14 18:39:54 +0900

r54085 の続き。enc/unicode/case-folding.rb で生成するようにしたフラグのマクロを enc/unicode.c でもちゃんと参照するように定義しています。またこのために include/ruby/oniguruma.h でビットフラグの幅の変更にあわせてマクロ定義を変更しています。

naruse: r54102 2016-03-14 19:14:48 +0900

Bignum の文字列化の最適化。最近の(?)コンパイラは整数の / 演算子と % 演算子が右辺左辺が同じ値に対して使われていると 1回の div 命令で div と mod を両方作って利用する最適化をするようで、少し順番を調整してやるとこの最適化が有効になったようです。 参考URL: http://naruse.hateblo.jp/entry/2016/03/14/191610

headius: r54103 2016-03-15 01:24:04 +0900

ruby の -v オプションのテストで JRuby を考慮するようにしています。

svn: r54104 2016-03-15 01:24:05 +0900

version.h の日付更新。

drbrain: r54105 2016-03-15 03:36:14 +0900

Marshal.load で extend された Class を読み込む時に extmod が nil だと SEGV していたのを修正しています。おそらく通常の dump だと順序的にこうなることはなくて意図的に作った dump 結果を load すると起こりえる潜在的なバグではないかと思います。

headius: r54106 2016-03-15 04:39:24 +0900

ruby の --disable-gems と --disable-did_you_mean オプションについてのテストを追加しています。