ruby-trunk-changes r57783 - r57785

今日は整数の乗算の最適化や == メソッドの最適化命令の最適化されるケースの追加などがありました。

nobu: r57783 2017-03-06 08:36:44 +0900

r57772 で VM 命令列のコンパイル時の label のチェックで名前を Symbol で渡すようにしたので格納しておく変数の型を ID から VALUE に変更しています。

shyouhei: r57784 2017-03-06 15:04:52 +0900

configure で __builtin_mul_overflow_p() の存在チェックを行い、可能なら乗算のオーバーフロー検知にこれを利用することで Integer#* の高速化を図っています。

nobu: r57785 2017-03-06 15:44:11 +0900

VM 命令の == メソッドの最適化命令 opt_eq_func で receiver と引数のオブジェクト両方のクラスの再定義チェックを行なっていましたが、receiver のほうだけ再定義されていないケースの分岐も追加して VALUE を直接比較するのではなくメソッド実装の関数を直接呼ぶパスに rb_float_equal() の呼び出しするケースを追加しています。