ruby-trunk-changes r40930 - r40934

今日は RGENGC 用に Hash オブジェクトの操作に write barrier を追加する変更がありました。

ktsj:r40930 2013-05-25 23:29:02 +0900

拡張ライブラリ fiddle のテストを fiddle が利用できない時に実行しないように、テストクラスの定義を if defined?(Fiddle) で飛ばすようにしています。

ktsj:r40931 2013-05-25 23:29:05 +0900

test/fiddle/test_handle.rb のインデントの修正のみ。

nobu:r40932 2013-05-25 23:55:18 +0900

internal.h のインデントと関数定義の body の開きかっこの位置のスタイルの修正だけです。

ko1:r40933 2013-05-26 21:37:11 +0900

RGENGC にからんで Hash の実装に write barrier を追加するようにしています。 struct RHash の ifnone メンバーが VALUE 型なので、その宣言に const をつけて直接代入できないようにして、RHASH_SET_IFNONE() というマクロを定義してこれを使って write barrier つきで ifnone メンバーに値を格納するようにしています。また st_update() や hash_aset(), hash_aset_str() などの Hash オブジェクトの要素を書き替える関数で write barrier を挿入しています。 世代別GC で write barrier というのがなぜ必要なのかというのは(以下略)。

svn:r40934 2013-05-26 21:37:15 +0900

version.h の日付更新。