ruby-trunk-changes r46999 - r47008

今日は Symbol GC の導入により ID2SYM() を使って Symbol を作ると GC されなくなる(pindown)ので、これを避けるようにする変更をあちこちでしていました。

ko1: r46999 2014-07-30 15:24:05 +0900

gc.c の未使用になっていたマクロ定義を削除しています。

svn: r47000 2014-07-30 15:24:16 +0900

version.h の日付更新。

suke: r47001 2014-07-30 21:35:15 +0900

拡張ライブラリ win32ole の WIN32OLE_RECORD 対応の続き。正直 WIN32OLE_RECORD クラスの背景もわかってないので詳細は省きます。

nobu: r47002 2014-07-30 21:36:27 +0900

thread.c の threadptr_local_aset() で if - else の if 節で return していたので else は削除しています。

nobu: r47003 2014-07-30 21:36:31 +0900

rb_to_symbol() という C API を追加しています。任意のオブジェクトを(Symbol か String 以外だったら) to_str で文字列化してからその Symbol を返します。

nobu: r47004 2014-07-30 21:36:34 +0900

r47003 で導入した rb_to_symbol() を ID2SYM(rb_to_id(id)) を使っていたところに利用して不要な pindown を避けるようにしています。

ktsj: r47005 2014-07-30 22:17:45 +0900

同じく Symbol の文字列を rb_id2name(SYM2ID(sym)) で得て symbol を pindown してしまっていたところを rb_sym2str() を使うように変更しています。

nobu: r47006 2014-07-30 22:46:41 +0900

r47005 の変更で RSTRING_PTR(rb_sym2str()) のように RSTRING_PTR() マクロの引数に関数呼び出しを渡していたので、複数回関数呼び出しが行なわれてしまっていたのを修正しています。一旦 VALUE 型の変数に代入してから使うようにしています。

nobu: r47007 2014-07-30 23:27:15 +0900

Process.kill や Signal.trap の引数のシグナルを指定する文字列が不正な時の ArgumentError 例外のメッセージに埋め込む時に PRIsVALUE を使ってエンコーディングを保持するようにしています。

ktsj: r47008 2014-07-30 23:31:53 +0900

sprintf.c で RSTRING_PTR() の中で関数呼び出し(rb_sym2str) をしてしまっていたところがあったので、ついでに PRIsVALUE を使って文字列オブジェクトのまま埋め込むようにして RSTRING_PTR() を使わないようにしています。