ruby-trunk-changes r37064 - r37067

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

ChangeLogtypo 修正です。

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 の日付更新。