refinement の実装のリファクタリングがありました。
shugo:r37064 2012-10-01 22:56:37 +0900
refinement のために Class/Module を拡張している Module を格納するための Hash オブジェクトの生成(Hash を作って Hash#compare_by_identity を呼ぶ)を identity_hash_new というメソッドに切り出しています。 #if 0 でコメントアウトされていますが RBasic::klass を 0 にして ObjectSpace から不可視にしたいようなのですが、そうすると default メソッドの呼び出しがエラーになってしまうということで断念されています。
nagachika:r37065 2012-10-01 23:52:53 +0900
nobu:r37066 2012-10-02 16:47:11 +0900
r37064 で refinement の拡張する Module を管理するための Hash を作る identity_hash_new で RBasic::klass を 0 にして ObjectSpace から不可視にするのをコメントアウトしていたのを有効にして、Hash を参照する時に rb_hash_aref() ではなく rb_hash_lookup() を使うようにしています。 rb_hash_lookup() は要素が存在しなかった時に default を呼ばず Qnil を返します。
svn:r37067 2012-10-02 16:47:17 +0900
version.h の日付更新。