ruby-trunk-changes r66942 - r66948

今日は Enumerator::ArithmeticSequence#first の不具合修正と最適化などがありました。

nobu: r66942 2019-01-30 12:36:06 +0900

hash.c の rb_dbl_long_hash() で rb_objid_hash() に渡す引数に rb_hash_start() を呼んでたのをやめています。rb_objid_hash() の中でも rb_hash_start() が呼ばれてて冗長だったので。というか2回呼ぶと seed.key.hash を2回加算するから hash 値変わるんじゃないかな。 hash 値はプロセスが変わるだけでも変わるから通常は問題ないと思うけど。

svn: r66943 2019-01-30 12:36:09 +0900

r66942 のインデントのタブを空白に展開。

svn: r66944 2019-01-30 12:36:10 +0900

version.h の日付更新。

nobu: r66945 2019-01-30 13:54:01 +0900

hash.c の rb_dbl_long_hash() と rb_ident_hash() から double の値を整数にマッピングする処理を dbl_to_index() という関数に切り出すリファクタリング

nobu: r66946 2019-01-30 14:08:36 +0900

hash.c の key64_hash() に prime2 と一緒に引数を渡す処理を st_index_hash() というマクロに切り出し。 objid_hash() での呼び出しは rb_objid_hash() だったのにこれも st_index_hash() に変更されてるけどこれはいいのかな?

mrkn: r66947 2019-01-30 15:05:57 +0900

Enumerator::ArithmeticSequence#first の引数チェックを修正して Range の終端に Float::INFINITY を使った場合にエラーになるのを修正し、さらに Enumerator::ArithmeticSequence#first で Fixnum と Float を始点/終点/step に持つ場合と Fixnum の始点の endless range の時の最適化処理を追加しています。 https://github.com/ruby/ruby/pull/2076 [ruby-core:90937] [Bug #15518]

svn: r66948 2019-01-30 15:06:02 +0900

r66947 のインデントのタブを空白に展開。