ruby-trunk-changes r44267 - r44280

今日は RubyGems の更新のほかデバッグ用に入れていたチェック機能の解除やテストの変更などが主であまり大きな変更はありませんでした。

ktsj:r44267 2013-12-17 23:46:56 +0900

r44243 で追加した IO.write のテストのメソッド名が重複していたのでメソッド名変更しています。

ko1:r44268 2013-12-18 09:01:08 +0900

メモリ管理のテストで page を追加した時の page 数のチェックをしているところできっちり想定した数ではなくて ±1 の範囲は許容するようにしています。page が追加されなかったってことはあるかもしれないと思うのですが、 +1 になることってあるのかなぁ。
あと範囲に収まっているのをチェックする assertion ないのかなぁと思いましたが、assert_include というのはあるみたいですね。

svn:r44269 2013-12-18 09:01:13 +0900

version.h の日付更新。

drbrain:r44270 2013-12-18 10:02:58 +0900

RubyGems を最新版に更新しています。 gem install の --ignore-dependencies というオプションを付けた時に高速にインストールできるようにしているそうです。どうもオプションが指定された時の情報の伝播が漏れてたのを直したみたいですね。

a_matsuda:r44271 2013-12-18 13:20:25 +0900

標準添付ライブラリ test/unit の rdoc コメントの typo 修正。 maye be → may be

nobu:r44272 2013-12-18 13:24:04 +0900

r44243 で追加して r44267 で改名した IO.write のテストメソッドですが、実は既に IO.write のテストをしているメソッドはあったようなので、そちらに統合しています。キーワード引数の扱いについてのテストのみ追加していあす。

nobu:r44273 2013-12-18 13:36:43 +0900

r44268 で page 数のチェックで誤差を許容するようにしたテストで assertion を assert_in_delta を使うように修正しています。なるほど assert_in_delta か。

nobu:r44274 2013-12-18 13:49:10 +0900

r44268, r44273 の追加修正で assert_in_delta に変更したために変数への代入が消えて後で参照していたところがエラーになっていたので修正しています。

ko1:r44275 2013-12-18 14:33:50 +0900

VM の stack overflow を VM stack に値を push するたびにチェックするようにしていた CHECK_VM_STACK_OVERFLOW_FOR_INSN() マクロをデフォルトでは無効にしています。 VM_DEBUG_STACKOVERFLOW というマクロを追加して、これを 1 (非0)にしたらまた有効化できる状態にしています。 r42194 で追加された機能で、もともとエラーがあったら検出するためのものだったのでリリース前に消す予定だったものです。確か VM のスタックって消費量が予測できるはずでメソッド呼び出しとかブロック呼び出しの時点で判定できるはずだからバグがなければ VM の命令ごとではオーバフローしないはずなんだったと思います。

ko1:r44276 2013-12-18 16:58:04 +0900

gc.c で GC.profile が有効かをチェックするマクロ gc_prof_enabled() を追加して、objspace->profile.run だけでなく objspace->profile.current_record もチェックするようにしています。より厳密に次の GC で情報が蓄積され始めたかというかもチェックするようにしたみたいな感じです。 また gc_profile_enable() と gc_profile_clear() で rest_sweep() を呼んで LazySweep の sweep を一旦完遂させるようにしていたのを消しています。 gc_profile_clear() のほうは r42697 でクリア後の current_record に触るのを防ぐための処置として入っているので、消してしまっていいのかなぁ。

ko1:r44277 2013-12-18 17:04:08 +0900

r44276 で gc_profile_record_get() の objspace->profile.run のチェックも gc_prof_enabled() マクロに置き換えてしまったのですが、ここでは current_record がない時には空の配列を返すため変更してはいけなかったので戻しています。

ko1:r44278 2013-12-18 23:34:23 +0900

GC.profile で major GC のトリガとなった理由を出力するところで、major GC の理由は複数の理由をビットマップで保持できるのでそれを表現できるように複数の文字で出力するようにしています。

ko1:r44279 2013-12-19 00:27:41 +0900

objspace->flags.dont_lazy_sweep の設定に応じて LazySweep を無効化するための処理が USE_RGENGC の定義されている時だけ動いていたので #ifdef の外に移動しています。

svn:r44280 2013-12-19 00:28:03 +0900

version.h の日付更新。