ruby-trunk-changes r43391 - r43397

今日は昨日の複数 heap 対応に続き Tomb heap という空になった page をまとめる heap を導入しています。

kazu:r43391 2013-10-23 00:46:21 +0900

r43388 の ChangeLog エントリの typo を修正。

svn:r43392 2013-10-23 00:46:26 +0900

version.h の日付更新。

zzak:r43393 2013-10-23 11:44:06 +0900

File#expand_path の rdoc コメントのマークアップ方式を修正しています。

ko1:r43394 2013-10-23 14:22:10 +0900

gc.c の GC プロファイル用の gc_prof_sweep_timer_stop() で r43388 でのマクロの改名に追随しています。デバッグ用にマクロで有効にしないとコンパイルされない部分だったので漏れていた模様。

ko1:r43395 2013-10-23 17:48:54 +0900

r43388 で ObjectSpace が複数の heap を持つことができるようにしたのを利用して、Tomb heap という heap を追加しています。これは heap のひとつの page を sweep 後にその中に生きているオブジェクトが1つもない状態になったら通常の heap (eden heap) から Tomb heap に移動するようにしています。これによる page の解放の判定を Tomb heap の page に対してのみ行うことで GC の負荷を下げようとしているみたいです。ついでに関数名の改名などをしています。
Tomb heap に所属する page だけ free のための判定をするから軽くなるってことかと思ったのですが heap_pages_free_unused_pages() では変わらず全 page をみているので、違うみたいですねぇ。所属する heap のチェックを最初に行なってはいますがそれだけだとそれほど速くなるような気がしないので、もっと別の見落としている理由があるのかなあ。

ko1:r43396 2013-10-23 17:52:38 +0900

r43395 で追加した heap_pages_free_unused_pages() でデバッグ用のメッセージ出力の fprintf(3) の引数に警告除去のため明示的なキャストを追加しています。

ko1:r43397 2013-10-23 19:16:01 +0900

gc.c の rb_heap_t::incrment を struct heap_pages に移動しています。複数の heap のそれぞれで管理するのではなくて ObjectSpace 全体で管理するようにしています。また page の解放のしきい値判定に使う heap_pages_free_min_page のパラメータを全体の slot 数の 65% から 80% に調整しています。
また heap_increment() で不要だった第3引数を削除したり、デバッグメッセージの引数の不正の修正など。