ruby-trunk-changes r37041 - r37050

今日はスタックフレームのメンバの削除や不要になった YARV の命令の削除など VM 部分の変更がありました。

nobu:r37041 2012-09-28 10:40:56 +0900

IO#reopen で mode の指定に文字列しか受け付けず、整数(File::Constants の定数)による指定が使えていなかったのを修正しています。 [ruby-core:47694]. [Feature #7067]

svn:r37042 2012-09-28 10:41:01 +0900

version.h の日付更新。

ko1:r37043 2012-09-28 13:05:36 +0900

コントロールスタックのフレームから bp (base pointer) を削除しています。 bp はそのフレームの値スタック上の基準位置を指していますが、ひとつ前のフレームの sp (stack pointer)とローカル変数の数から算出できるのでなくてもなんとかなるようです。さらに値スタックにメソッド呼び出しの引数を積む前にレシーバを積むようにしています。一貫性のためということですがこれは bp の削除とは関係しているのでしょうか。

ko1:r37044 2012-09-28 13:16:59 +0900

r37043 でスタックフレーム構造体の bp を削除しましたが、 VM_DEBUG_BP_CHECK が真だと bp_check というメンバにデバッグ用に残されています。これをデフォルトで残すために VM_DEBUG_BG_CHECK を 1 に定義しています。

ko1:r37045 2012-09-28 15:44:24 +0900

利用されていない YARV 命令 opt_checkenv が削除されています。また対応するノード(ASTノード)の NODE_OPTBLOCK も削除されています。

shugo:r37046 2012-09-28 15:48:20 +0900

昨日の r37040 で Module#refine を Module にも使えるようにした変更の再修正です。メソッド探索時に IClass は元の Module に辿るのですが、その後 IClass の位置から再び辿れるように継承関係のリンクリストを複製しています。

nobu:r37047 2012-09-28 17:11:27 +0900

VM_DEBUG_BP_CHECK が真の時のデバッグプリントで bp_check の位置の表示のオーバフローしないように long にしています。

naruse:r37048 2012-09-28 17:29:21 +0900

Windows 環境で rubygems のテストがファイルパスの大文字小文字区別しないために環境変数 PATH のチェックでエラーになっていたので、Windows 環境では rubygems でファイルパスを downcase してからチェックするようにしています。 [ruby-core:47711]

ko1:r37049 2012-09-28 17:58:22 +0900

vm_insnhelper.c のリファクタリング。不要なローカル変数を削除したりなど。

shirosaki:r37050 2012-09-28 22:43:06 +0900

Windows で外部の echo コマンドに非 ASCII 文字を渡すとうまく動かないのでバッククオートによる外部コマンド起動ではなくて ruby を使って文字列を作成するようにしています。 [ruby-core:47709] [Bug #7076]