ruby-trunk-changes r54208 - r54222

今日は NODE のマーク漏れ修正、ギリシア文字での String#succ の不具合修正、Time のための数値演算の最適化などがありました。

nobu: r54208 2016-03-21 18:55:29 +0900

テストを並列で流している時に worker のひとつが落ちたらどのテストファイルを実行中だったかを表示するようにしています。

nobu: r54209 2016-03-21 18:55:50 +0900

r54100 の正規表現名前つき capture の実装変更で NODE_MATCH2 の NODE 型オブジェクトが u3 の要素にも値を持つようになったので rb_gc_mark_node() でマークするように修正しています。

nobu: r54210 2016-03-21 19:09:33 +0900

String#succ でギリシア文字の大文字の "Ρ" と "Σ" の codepoint の間に割り当てられてない値("\u03A2")があって、"Ω" まで飛んでしまっていたので隙間に不正な codepoint があるケースを許容するようにしています。 [ruby-core:74478] [Bug #12204]
ギリシア文字のシグマって2種類の小文字があるんだなぁ。

nobu: r54211 2016-03-21 20:18:31 +0900

make test-all で渡すオプションをロングオプションの記法を使うようにしています。 また cygwin/GNUmakefile.in で msys2 向けの MSYS2_ARG_CONV_EXCL という環境変数へのオプション名の指定を追加しています。r49549 で --exclude で正規表現の指定もできるようになっていましたが、msys2 を用いた環境ではパスの自動変換がきいてうまく指定できてなかったそうです。 [ruby-dev:49525] [Bug #12199]

nobu: r54212 2016-03-21 22:09:26 +0900

r54203 の rb_fix_mul_fix() の DLONG が定義されなかった時の変数名 typo の修正 r54206 のさらに追加修正。 変数名が VALUE 型の引数のほうだったので、long に変換後の変数名に再修正しています。

naruse: r54213 2016-03-21 22:17:45 +0900

time.c の mod() の Fixnum 向けの最適化と quo() の第1引数が FIXNUM_MIN で y が -1 の時の特殊処理を追加しています。

naruse: r54214 2016-03-21 22:21:12 +0900

r54213 の quo() の変更で割り切れるかどうかの判定を変えてしまっていたのを修正。なるほど特殊処理をわけることで結果が Fixnum におさまることが確実だから LONG2FIX() にするというのが主眼だったのか。

nobu: r54215 2016-03-21 22:31:30 +0900

r54213 で quo() の特殊処理部分の return 漏れを修正。

naruse: r54216 2016-03-21 22:36:03 +0900

r54203 で rb_fix_mul_fix() を導入したのと同様に rb_fix_div_fix() と rb_fix_mod_fix() を導入して、さらにそれらを統合した rb_fix_divmod_fix() を導入して r54213 と同様に結果が Fixnum におさまらなくなるケースを分離してメインのパスでは LONG2FIX() で変換するようにしています。

nobu: r54217 2016-03-21 22:53:25 +0900

iseq.c の rb_iseq_compile_with_option() で gcc 4.8 向けの警告抑制のために変数宣言に修飾子を追加しています。

naruse: r54218 2016-03-22 03:19:15 +0900

time.c の divmod() から引数が Fixnum の時のケースを rb_fix_divmod_fix() を利用するようにしています。また wquo() でメソッド呼び出しをしているところを quo() を利用するようにしたり、wdivmod() から wdivmod0() を切り出して WIDEVALUE_IS_WIDER が定義されている時だけ利用するようにしています。

svn: r54219 2016-03-22 03:19:16 +0900

version.h の日付更新。

naruse: r54220 2016-03-22 03:57:25 +0900

r54218 で不要になったローカル変数宣言の削除および wdiv() と wmod() で wdivmod0() を呼ぶようにした時の変数名 typo 修正。

naruse: r54221 2016-03-22 03:57:30 +0900

time.c の wi_mul() は削除して wmul() でオーバフローのチェックだけして C の整数演算を利用するようにしています。また wmul() でもメソッド呼び出しを省略して mul() を利用するようにする最適化を行なっています。その他 wmul() を呼び出しているところで Fixnum 向けの最適化を個別にしていたところは不要になったので削っています。

naruse: r54222 2016-03-22 04:14:27 +0900

r54221 のかっこの対応修正や div(), mod() に渡す引数の変換漏れ修正など。