ruby-trunk-changes r52108 - r52116

今日は UDPSocket#send のメモリリーク修正、AST の NODE の attrset ID 保持についての変更などがありました。

nobu: r52108 2015-10-12 09:08:44 +0900

Float#** の実装で pow(3) の呼び出しと DBL2NUM() の変換の呼び出しを括り出して最後に return するようにリファクタリング

nobu: r52109 2015-10-12 09:08:58 +0900

numeric.c で "-@", "**", "divmod", "<=", ">=" などの演算子メソッドの ID を rb_intern() して作っていたのを、組込みで定義されているものや Init 関数で取得済みの変数を利用するようにしています。

svn: r52110 2015-10-12 09:09:03 +0900

version.h の日付更新。

nobu: r52111 2015-10-12 09:11:37 +0900

r52097 や r52101 の拡張ライブラリ socket の UDPSocket のメモリリーク修正の続き? で xxxx_internal() 関数内で rb_io_check_closed() でソケットが閉じられてないか再確認するようにしています。 GetOpenFile() も rb_io_check_closed() を含んでいるので、_internal() で再確認するのは別 Thread での変更のためかな、と思ったのですが rb_ensure() は Thread 切り替えなしで関数を呼ぶみたいなので、なんでだろ…。コミットメッセージをみるとむしろチェックを1回きりにしようとしているみたいなので、内容と齟齬があるような気がします。

nobu: r52112 2015-10-12 09:11:54 +0900

拡張ライブラリ socket の UDPSocket#send で rb_ensure() を使って確保した struct rb_addrinfo を例外発生時にも解放するように修正しています。潜在的メモリリークがあったようですね。

nobu: r52113 2015-10-12 11:48:37 +0900

ID の attrset (a= のような等号記号つきの代入っぽいメソッドの ID)に "=" なしの ID にビットフラグを追加した ID を振ったものを NODE に記録する必要がなくなっているということで、コンパイル時の処理を修正しています。

nobu: r52114 2015-10-12 12:03:36 +0900

ruby --dump=parsetree で AST を表示する時に r52113 で attrset ID が NODE に含まれなくなったのに対応しています。

nobu: r52115 2015-10-12 12:26:24 +0900

parse.y のマクロ new_attr_op_assign() の引数が常に ripper_id2sym() を経由していたので、マクロ内に ripper_id2sym() の呼び出しまで埋め込むように変更しています。

nobu: r52116 2015-10-12 12:39:23 +0900

r52114 の再修正。 コマンドラインオプション --dump=parsetree で nd_aid はチェックしないようにしています。また parsetree_with_comment で表示するコメントから reader/writer の表示は消しています。