ruby-trunk-changes r33355 - r33360

今日はオブジェクトの型チェックの方法を統一するやや大規模なリファクタリングがありました。

nobu:r33355 2011-09-29 20:06:42 +0900

vm_eval.c のインデントの修正のみ。

svn:r33356 2011-09-29 20:06:47 +0900

version.h の日付更新。

nobu:r33357 2011-09-29 20:07:45 +0900

オブジェクト(VALUE)の型をチェックする時に TYPE() マクロで型を取り出して T_OBJECT, T_ARRAY などと比較しているようなコードを RB_TYPE_P() マクロを利用するように変更しています。 RB_TYPE_P() は即値の型の場合のショートカットがあってコンパイラの最適化がうまいことしてくれるとより高速なコードにしてくれるそうです。

nobu:r33358 2011-09-29 20:09:48 +0900

gc.c の run_finalizer() の引数に回収するオブジェクトの object_id を渡すようにしていたのを、オブジェクト(VALUE) をそのまま渡して関数内で object_id にして使うようにしています。型の警告除去?ではなさそうですね。

nobu:r33359 2011-09-29 20:10:46 +0900

同じく gc.c にて ObjectSpace._id2ref の実装である id2ref() 関数から、渡された整数がオブジェクトのID(アドレス)として正しいかの判定と、生きている(回収済みでない&内部的に利用されているオブジェクトじゃない)ことの判定部分を inline 関数に(is_id_value, is_live_object)切り出しています。

nobu:r33360 2011-09-29 20:37:47 +0900

ext/gdbm/gdbm.c の rb_gdbm_fatal() という関数の引数 char * に const を付けています。