ruby-trunk-changes r59135 - r59145

今日はメモリ管理まわりの不具合修正と IO#reopen にブロックを受け付けるようにする機能追加などがありました。

nobu: r59135 2017-06-21 21:51:26 +0900

gc.c のマクロ FL_TEST2(), FL_SET2(), FL_UNSET2() などのマクロの共通の構造を FL_CHECK2() というマクロに切り出してこれを利用して実装するようにリファクタリングし、FL_SET2() と FL_UNSET2() の時のエラー時の rb_bug() のメッセージを FL_TEST2() と同様の情報を出すようにしています。

nobu: r59136 2017-06-22 09:59:54 +0900

r56558 で修正したと思いきや実は直ってなかったメモリ管理の不具合修正。 heap_page_allocate() で page を追加する時に heap_pages_sorted の容量が足りなくなってたら realloc するようにしています。 r59126 で追加した KNOWNBUG.rb のテストも削除しています。 [ruby-core:76837] [Bug #12670]

svn: r59137 2017-06-22 09:59:55 +0900

version.h の日付更新。

ko1: r59138 2017-06-22 14:03:18 +0900

gc.c の RGENGC_CHECK_MODE で分岐して assert(3) を呼び出しているところを GC_ASSERT() というマクロに切り出して不要な時は分岐自体消すようにしています。まあコンパイラで消されると思いますが。

ko1: r59139 2017-06-22 14:51:43 +0900

r59121 で test/lib/test/unit/assertions.rb に frozen_string_literal: true の magic comment を追加した時に文字列リテラルに破壊的操作をしていたところが残っていたので修正しています。

ko1: r59140 2017-06-22 15:42:26 +0900

gc.c で heap_allocatable_pages にサイズをセットして heap_pages_expand_sorted() を呼び出す処理を heap_allocatable_pages_set() という関数に切り出しています。

svn: r59141 2017-06-22 15:42:27 +0900

r59140 の行末の空白除去。

glass: r59142 2017-06-22 15:50:32 +0900

IO#reopen にブロックを受け取って、ブロックを抜けたら自動的に閉じる、つまり open と同様の呼びかたができるようにしています。 [ruby-core:27701] [Feature #2631]

ko1: r59143 2017-06-22 17:33:33 +0900

String#to_sym で dynamic symbol を大量に作って ObjectSpace.count_symbols のテストをしているテストで Symbol 化する文字列に pid と rand で生成した乱数を含めるようにして重複しないようにしています。ふーむこれ偶然重複することあるのかな。並列テスト時はプロセスも別だろうし…。

ko1: r59144 2017-06-22 17:37:53 +0900

make parse というターゲットで tool/parse.rb を使っていたのを --dump=parsetree_with_comment,insns を付けて実行する方法に変えています。 tool/parse.rb は YARV のマージ時、つまり 1.9 の頃からあったみたいですね。けどもう不要になったようです。

glass: r59145 2017-06-22 19:56:49 +0900

標準添付ライブラリ shell の ShellCommand で引数の型が間違っていた時の例外のクラスの参照が間違っていた不具合を修正しています。 https://github.com/ruby/ruby/pull/1657