ruby-trunk-changes r31432 - r31437

今日は define_method にブロックを渡して定義したメソッドと __method__ の組み合わせの不具合の修正がありました。

kosaki:r31432 2011-05-04 22:10:06 +0900

date_core のテストでデバッグ用のメソッドやモジュールが未定義の時の skip はただの return で黙ってスルーするように変更しています。

kosaki:r31433 2011-05-04 22:14:28 +0900

bm_vm4_pile.rb と bm_vm4_thread_pass.rb が時間がかかりすぎるということで繰り返し回数を減らしています。

tenderlove:r31434 2011-05-05 08:07:58 +0900

Psych の日付の parse で正規表現による capture の方法を少し変更しています。capture 結果を sub しないで済むようにしているとのこと。動作は違わないと思うので速度のためでしょうか。

svn:r31435 2011-05-05 08:08:03 +0900

version.h の日付更新。

nagachika:r31436 2011-05-05 15:32:37 +0900

Method#define_method でブロックや Proc オブジェクト渡しで定義したメソッドは、同じブロックや Proc オブジェクトを複数のメソッドの定義に使い回した時に __method__ が返すメソッド名が全て最後に定義したメソッドの名前になってしまう不具合を修正。 [ruby-core:35386] [Bug #4606]
control frame に method entry があればそこから oridinal_id を取得、method entry がなかったら control frame stack と iseq の parent_iseq を辿ったものどうしをチェックしてメソッドとして呼ばれたフレームを探し出してその method entry からメソッド名を取得するようにしています。

nagachika:r31437 2011-05-05 17:39:22 +0900

r31436 で追加した control frame stack と iseq から method entry を検索する処理はメソッド呼び出しが深いとかなり高コストなので検索した結果を cfp->me に保存しておくようにしています。