ruby-trunk-changes r54901 - r54910

今日は標準添付ライブラリ set や net/http の Enumerator を返すメソッドの size 対応や、Proc#call や define_method にブロック渡しで定義されたメソッドのブロックつきの呼び出しの最適化などがありました。

ktsj: r54901 2016-05-04 18:06:58 +0900

標準添付ライブラリ set の Set#select! のテストを追加しています。

svn: r54902 2016-05-04 18:06:59 +0900

version.h の日付更新。

ktsj: r54903 2016-05-04 18:06:59 +0900

標準添付ライブラリ set の Set#delete_if, #keep_if, #collect!, #reject!, #select!, #classify, #divide などのメソッドがブロックなしで呼ばれて Enumerator を返す時に size の指定のためのブロックつきで Enumerator を作るようにしています。

ktsj: r54904 2016-05-04 18:07:01 +0900

r54903 で修正した Set#delete_if, #keep_if, #collect!, #reject!, #select!, #classify, #divide の rdoc 用コメントに、ブロックを渡さずに呼ぶと Enumerator がかえされることを追記しています。

ktsj: r54905 2016-05-04 18:46:43 +0900

標準添付ライブラリ net/http の Net::HTTPHeader#each_capitalized_name のテストを追加しています。

ktsj: r54906 2016-05-04 18:46:46 +0900

標準添付ライブラリ net/http の Net::HTTPHeader#each_header, #each_name, #each_capitalized_name, #each_value, #each_capitalized などのメソッドでブロックが渡されなかった時に返す Enumerator が size を返せるようにしています。

ktsj: r54907 2016-05-04 18:46:48 +0900

r54906 で修正した Net::HTTPHeader#each_header, #each_name, #each_capitalized_name, #each_value, #each_capitalized などのメソッドの rdoc 用コメントに、ブロックを渡さずに呼ぶと Enumerator が返されることを追記しています。

nobu: r54908 2016-05-04 19:10:05 +0900

proc.c の method_callable_method_entry() の引数に修飾子 const を追加しています。

nobu: r54909 2016-05-04 19:10:06 +0900

proc.c でブロックの Proc オブジェクトの VALUE 型変数から rb_block_t * の参照を取り出す処理を passed_block() として切り出すリファクタリング

nobu: r54910 2016-05-04 19:10:07 +0900

proc.c の rb_method_call_with_block() から $SAFE の値を一時的に変更して呼ぶために PUSH_TAG()/EXEC_TAG() で大域脱出を捕捉する必要があるケースとそうでないケースを call_method_data_safe() と call_method_data() という関数に切り出して分岐させて、不要な時に PUSH_TAG()/EXEC_TAG() を省略するように最適化しています。