ruby-trunk-changes r50786 - r50792

今日もメソッド管理の実装の変更が続いています。 alias 時の構造はまた定義を共有する方向に戻されました。

normal: r50786 2015-06-06 07:21:47 +0900

拡張ライブラリ socket の BasicSocket#sendmsg で controls_str が 0 の時の構造体 struct msghdr のメンバ msg_control, msg_controllen を初期化していましたが、この構造体は memset(3) で 0 クリアされているため不要だったので削っています。コンパイルしたら消えるはずですが、貴重な端末の4行を節約するために削除とのこと。

ko1: r50787 2015-06-06 08:00:22 +0900

rb_objspace_t のみメンバとして持つ構造体 struct mark_tbl_arg を廃止して mark_entry(), mark_key(), mark_tbl() などには直接 rb_objspace_t を渡すように変更しています。

normal: r50788 2015-06-06 08:55:23 +0900

r50725 で追加した Socket#sendmsg_nonblock のテストで FreeBSD で Errno::EMSGSIZE が発生するとのことで r50766 で捕捉する例外に追加されていましたが、これは一度に送信するバッファサイズに依存しているそうなので、10000 バイトの文字列を送信しようとしていたのを 8192 に変更しています。 [ruby-core:69466]

nobu: r50789 2015-06-06 10:37:50 +0900

class.c の ins_methods_push() でメソッドの可視性の enum 型 rb_method_visibility_t と long の比較をしていたところを警告除去のため cast を追加しています。

ko1: r50790 2015-06-06 15:07:06 +0900

r50789 の再修正。そもそも ins_methods_push() の引数 type の型 rb_method_visibility_t に揃えて、ついでに仮引数名も visi にして、visi を expected_visi に改名しています。

ko1: r50791 2015-06-06 16:01:21 +0900

r50790 の追随で ins_methods_push() に引数を渡すほうでの cast を追加しています。

ko1: r50792 2015-06-06 19:19:48 +0900

r50728 で alias 時にメソッド定義の rb_method_definition_t をコピーするようにしましたが、再度 alias で作られた method entry が rb_method_definition_t を共有するように再修正しています。
rb_method_definition_t::flags を rb_method_entry_t::attr::flags に移動し、rb_method_definition_t::alias_count_ptr は削除し rb_method_definition_t::alias_count を追加しています(カウンタだけ共有していたけど rb_method_definition_t が共有されるようになったので直接カウンタを持てるようになった。最近メソッド管理回りの変更が多くて現状についていくのが大変ですねー。