ruby-trunk-changes r46752 - r46757

今日は昨日の dynamic symbol の内部処理の変更の再修正などがありました。

ko1: r46752 2014-07-08 14:48:36 +0900

r46727 で fstring のテーブルで sweep 予定の文字列を rb_gc_resurrect() で復活しないで新規追加するようにした変更の追加で、sweep 予定のオブジェクトはテーブルから削除しておくようにしています。こうしておかないとまたゴミオブジェクトがみつかって重複した追加がされてしまい可能性があったのではないかと思います。また struct RSymbol::fstr を 0 クリアしておいて、sweep 時のテーブルからの削除の必要の有無を判定できるようにしています。
あと dsymbol_alloc() で global_symbols.minor_marked を 0 クリアしていますがこれとの関係はよくわかりません。新規に symbol を追加した時に次の minor mark でマークやりなおすようにしています。多分これは resurrect やめたのとは独立して、symbol 追加後にはマークしなおしが元々必要だったのではないかな…。

svn: r46753 2014-07-08 14:48:49 +0900

version.h の日付更新。

nobu: r46754 2014-07-08 16:01:10 +0900

parse.y の is_asgn_or_id() というマクロを1つだけの呼び出し元に展開しています。

nobu: r46755 2014-07-08 16:58:03 +0900

r46751 で追加した EnvUtil.find_executable を test/ruby/memory_status.rb でも利用して ps コマンドを探索するようにしています。 Solaris でのテストのためみたいですが、チケットのコメントをみるとどうもまだだめみたいですね。 [ruby-dev:48370] [Bug #10010]

nobu: r46756 2014-07-08 17:04:12 +0900

sprintf.c の rb_str_format() で sprintf("%s", { foo: "str" }) のように Hash のキーで指定した値を埋め込む識別子でキー名のシンボルのチェックがされていなかったのをチェックを追加しています。

kazu: r46757 2014-07-08 22:14:01 +0900

r46749 の ChangeLog エントリの typo 修正。