ruby-trunk-changes r45756 - r45761

今日は Symbol GC で sweep 予定の Symbol を触ってしまう可能性のあった不具合の修正や TracePoint/set_trace_func の define_method によるメソッドの return イベントが取れるようにする修正などがありました。

nobu: r45756 2014-04-30 17:06:51 +0900

Symbol GC で LazySweep で sweep 予定の Symbol を拾ってしまう問題の追加修正。parse.y の rb_id_attrset() で xxx= のようなメソッドの Symbol を生成するところで static な Symbol を pin down しようとしてしまっていたのを dynamic な Symbol だけ pin down するように修正しています。 [ruby-core:62226] [Bug #9787]

svn: r45757 2014-04-30 17:06:56 +0900

version.h の日付更新。

ko1: r45758 2014-04-30 18:08:10 +0900

Module#define_method にブロックや Proc オブジェクトを渡して定義されたメソッド(BMETHOD)から抜ける時に TracePoint や set_trace_func で設定したフックの return イベントが呼び出されていない不具合を修正しています。 [ruby-core:62096] [Bug #9759]

nobu: r45759 2014-04-30 18:11:07 +0900

r45758 で追加したテストの行末の空白除去。

nari: r45760 2014-04-30 19:58:45 +0900

gc_after_sweep() で Tomb heap (解放されたページの所属するヒープ)のページ数が heap_pages_increment より大きい時に heap_pages_expand_sorted() を呼んでいたのをやめています。不要にヒープ拡張をしてしまっていたみたいです。

nobu: r45761 2014-04-30 21:09:35 +0900

parse.y の next_id() でシンボル名を表示する時に 20文字以上の時に "..." で省略表示するようにしていたのを、そのために昔追加していた rb_str_ellipsize() という関数を利用するようにリファクタリングしています。