ruby-trunk-changes r51901 - r51907

今日はメソッド呼び出し時の情報の構造体の分割という内部的には大きな変更がありました。

akr: r51901 2015-09-20 02:18:49 +0900

r51897 で File.mkfifo が追加された時、テスト用のユーティリティ test/lib/envutil.rb でも定義されてた File.mkfifo のの定義の分岐が修正されましたが、定義される条件はほぼ同じなので定義自体削除されています。

svn: r51902 2015-09-20 02:19:00 +0900

version.h の日付更新。

ko1: r51903 2015-09-20 02:59:58 +0900

メソッド呼び出しの情報を格納する構造体 rb_call_info_t を struct rb_call_info と改名し、そこから keyword 引数についての部分を struct rb_call_info_kw_arg として分離し、keyword 引数がある時だけそれを含む struct rb_call_info_with_kwarg という構造体を利用するようにしています。さらに cache 用のメンバは struct rb_call_cache に、receiver やブロック、引数など呼び出し時の情報を struct rb_calling_info に分離して VM 命令や関連する関数で別の引数として持ち回るようにしています。
だいぶ変わりましたねー。struct rb_calling_info みたいに呼び出し時の情報と(まあある意味全部呼び出し時ではあるんですが)メソッド固有の情報が分離されたのはすっきりしましたね。keyword 引数のところはポインタ1つぶん省略できる場合があるかわりに分岐が増えてどんな効果があるか予想が難しいですが…。

ko1: r51904 2015-09-20 03:21:35 +0900

r51903 で rb_iseq_free() で rb_iseq_t::body::cc_entries の解放が漏れていたのを修正。

nobu: r51905 2015-09-20 08:04:48 +0900

parse.y の ripper_id2sym() で rb_ispunct() の条件に含まれている (id) < 256 という冗長な条件を削っています。また rb_ispunct() の引数にキャストを追加して警告除去しています。

nobu: r51906 2015-09-20 10:07:40 +0900

Kernel#callcc で作成した Continuation の rdoc 用コメントに Continuation をメソッドをまたいで作成場所と別の場所から呼び出すことができることを明記しています。 https://github.com/ruby/ruby/pull/1026

nobu: r51907 2015-09-20 10:17:25 +0900

r51873 の追加修正。 String#setbyte で更新後の coderange を考慮しているところで ENC_CODERANGE_CLEAR() を呼ぶパスをまとめて、そうでない場合に goto を使って ENC_CODERANGE_CLEAR() の呼び出しをスキップさせるようにリファクタリングしています。