ruby-trunk-changes r59168 - r59171

今日はトップレベルでの return が特殊な文脈で書かれると rb_bug() で異常終了になることがある不具合を修正しています。

nobu: r59168 2017-06-24 21:01:02 +0900

r59167 で標準添付ライブラリ delegate で eql? も委譲するようにした変更で rubyspec のテストも変更した際に、古い ruby では失敗するようになってしまったので ruby_version_is で 2.5 以降の場合のみ変えるように再修正しています。 [ruby-core:76950] [Bug #12684]

nobu: r59169 2017-06-25 14:10:48 +0900

return 文をメソッドの引数やトップレベルの文字列の式展開の中に書いた時に異常終了する不具合を修正しています。すごい。異常終了しないにしてもエラーになると思いますが。 [ruby-core:81761] [Bug #13678]

svn: r59170 2017-06-25 14:10:49 +0900

version.h の日付更新。

nobu: r59171 2017-06-25 17:55:23 +0900

compile.c の iseq_set_sequence() の中で iseq->type の分岐のあちこちで行なっていた VM スタックの深さの整合性チェックの部分を fix_sp_depth() という独立した関数に切り出して、ise_set_sequence() の先頭で 1回呼び出しておくようにしています。anchor のリストを 2回余分に辿ることになるけどエラー時には早く検出できますね。しかしエラーじゃない時の速度のほうが優先されると思うので遅くなるようだと微妙ですね。この部分は速度にはあまり影響しないという可能性もありますが。