ruby-trunk-changes r38734 - r38740

強は BigDecimal の累乗計算の不具合修正、flip-flop 演算子を eval 系メソッドに文字列を渡した処理内で使った時の不具合修正などがありました。

mrkn:r38734 2013-01-07 23:42:52 +0900

BigDecimal#** で累乗の計算をする時に Real::obj のオブジェクトが利用中に BigDecimal_exp() を呼ぶので GC で解放されてしまう(Real::obj はマークされておらず、bigdecimal.c では必要に応じて ENTER()/SAVE()/GUARD_OBJ() などのマクロで保護するようにしているみたいです)ため稀にエラーが発生したいたため、ローカル変数に格納して RB_GC_GUARD() で保護するようにしています。 [ruby-core:47632] [Bug #7044]
テストは 1000 回累乗を繰り返しているんですけど GC.stress = true でも再現しないでしょうか。 GC されたオブジェクトが再利用されて別のものが入らないとチケットの報告された現象にはならないかもしれないですね。

kazu:r38735 2013-01-08 07:26:00 +0900

r38720 の ChangeLog エントリの typo 修正。

svn:r38736 2013-01-08 07:26:55 +0900

version.h の日付更新。

nobu:r38737 2013-01-08 11:18:46 +0900

README の install の項目に、拡張ライブラリが依存している外部のライブラリ(openssl とか readline とか)をインストールしたり更新したりしてその拡張ライブラリの extconf.rb を再実行したい時には make distclean-ext をしないと、同じ結果を使い回すため依存ライブラリを入れた拡張ライブラリがビルドされなかったりするという記述を追記しています。

mrkn:r38738 2013-01-08 12:40:21 +0900

r38734 の ChangeLogtypo 修正。

nobu:r38739 2013-01-08 14:41:44 +0900

ISeq の flip-flop 条件式用の実行時の情報を保持するメンバ flip_cnt を iseq_compile_data から rb_iseq_q 直下へ移動して、local_iseq のほうに格納するようにしています。 irb 上で flip-flop 条件式を利用した時に同じ内容なのに結果が変化することがあった不具合の対処だそうです。 r38292 で iseq 上に flip-flop 用のカウンタを 親 rb_iseq_t にまとめた時に eval で作られた時のことが考慮されていなかったのでやっぱり個別に rb_iseq_t 毎に持つようにしたという感じでしょうか。 [ruby-core:51296] [Bug #7671]

nobu:r38740 2013-01-08 14:57:42 +0900

insns.def のインデントをスタイルの修正のみです。