ruby-trunk-changes r54066 - r54081

今日は --dump=parsetree オプションで compile option の情報も表示されるようにする変更や、iseq の coverage を不要な時には作らないようにする変更などがありました。

kazu: r54066 2016-03-09 22:30:13 +0900

r54025 の ChangeLog エントリの typo 修正。

odaira: r54073 2016-03-10 09:55:37 +0900

AIX では UDPSocket#recvmsg が返す rflags に MSG_TRUNC のフラグは立たないそうなのでテストでの assertion をスキップさせるようにしています。

svn: r54074 2016-03-10 09:55:37 +0900

version.h の日付更新。

nobu: r54075 2016-03-10 14:32:48 +0900

update_coverate() で iseq から取り出した coverage 用の配列が 0 かどうかのチェックをしていたのを、オブジェクトのタイプのチェックをするようにしています。

nobu: r54076 2016-03-10 14:32:49 +0900

prepare_iseq_build() で rb_iseq_t::body::mark_ary に格納する coverage をマクロ経由で何度も参照/セットしていたのをローカル変数で解決してからまとめてセットするようにリファクタリングしています。

nobu: r54077 2016-03-10 15:19:55 +0900

ruby のオプション --dump=parsetree で NODE をダンプする時に nd_compile_option に保持されるコンパイルオプションを格納する Hash オブジェクトは klass を 0 にした内部オブジェクトで inspect で文字列化できないので単に存在だけ表示していたのを、専用の文字列化関数を導入して内容が表示されるようにしています。

nobu: r54078 2016-03-10 16:06:39 +0900

rb_compile_option_t の各メンバは on/off のフラグなのでそれぞれで int を使っていたのを bit field を使って圧縮しています。

nobu: r54079 2016-03-10 16:27:40 +0900

r54077 の compile_option の文字列化のためのマクロで COMPOUND_FIELD1() で引数を文字列リテラルとして展開していたのを呼び元の F_OPTION() や F_NODE() での展開に変更しています。

nobu: r54080 2016-03-10 16:27:41 +0900

オプション --dump=parsetree でダンプする NODE の nd_compile_option の表示ですが値が 0 だったら表示しないように修正しています。

nobu: r54081 2016-03-10 17:34:18 +0900

ISeq のコンパイルオプションに coverage_enabled というフラグを追加しています。ユーザが指定するというよりも、eval 用にコンパイルしている時や safe level によって parser で自動的に off にする制御をするために作ってるっぽいですね。省メモリのためでしょうか。