ruby-trunk-changes r40403 - r40410

今日は Marshal.dump/load の修正や % 演算子を実行する VM の最適化命令 opt_mod のパフォーマンスのための変更などがありました。

charliesome:r40403 2013-04-21 23:23:48 +0900

r40402 の setjmp(3) を sigsetjmp(3) に変更するのを revert しています。 sigsetjmp() がマクロだった場合を考慮した検出方法の変更の部分はそのままなので完全な revert ではないです。

naruse:r40404 2013-04-22 11:59:09 +0900

r29729 の浮動小数点数の FPU との精度の違いで出る誤差を防ぐ変更を revert しています。以前の挙動にしたかったら -msse2 -mfpmath=sse のようなオプションをつけるべし、とのこと。

naruse:r40405 2013-04-22 11:59:12 +0900

r40373 と同様に test/ruby/test_rubyoptions.rb のテストで子プロセスを起動するときに --disable-gems オプションをつけるようにしています。

svn:r40406 2013-04-22 11:59:16 +0900

version.h の日付更新。

akr:r40407 2013-04-22 12:13:50 +0900

test/-ext-/num2int/test_num2int.rb の整数の変換のテストにオーバフロー時のテストケースを追加しています。

nobu:r40408 2013-04-22 17:09:44 +0900

r40366 および r40392 で marshal_dump メソッドを定義した時の Marshal.dump の挙動の変更の追加修正で、Marshal.load 時にインスタンス変数をコピーする際に rb_generic_ivar_table() で取得したインスタンス変数用のテーブルのみしか見ていなかったのを普通のインスタンス変数もコピーするようにしています。 先日 marshal_load に渡すオブジェクトのインスタンス変数もコピーされると書きましたが、実際にはコピーされていなかったみたいです。また generic_ivar_table というのはあまり読んだ記憶がないのですが、即値のオブジェクトのインスタンス変数を保持するために static なテーブルにインスタンス変数用の st_table を登録しておくもののようです。 [ruby-core:51163] [Bug #7627]

hsbt:r40409 2013-04-22 18:35:27 +0900

Array#delete_if の rdoc コメントのサンプルコードを変更しています。 String の ">=" 演算子だとわかりにくいので要素を整数にしてみたってことでしょうか。

charliesome:r40410 2013-04-22 22:57:21 +0900

VM の命令 opt_mod でレシーバと引数の両方が Fixnum で正の数だった場合は単に C 言語の % 演算子で計算するのが早いのでそのように条件分岐を追加しています。
分岐が増えてあまり早くならないとか考えられるので最近のCPUでのベンチマーク結果とか欲しい感じしますね。