今日は Ruby VM のオペランド融合による最適化が有効になりました。また RDoc の機能追加や Fiddle の DL との互換性の向上などがありました。
kazu:r38166 2012-12-04 00:08:00 +0900
NEWS ファイルの体裁の修正。
svn:r38167 2012-12-04 00:08:07 +0900
version.h の日付更新。
drbrain:r38168 2012-12-04 04:12:03 +0900
rdoc が処理する対象を記述する .document ファイルに NEWS と doc/NEWS-?.?.? の過去の NEWS ファイルたちを追加して、これらのファイルの1行目に modeline を追加/修正しています。
drbrain:r38169 2012-12-04 08:32:39 +0900
RDoc が "class:PageName" のような記法(これが何を表わしているか知らないんですけど……)でページ名のところに拡張子がついていてもいいようにしているようです。
drbrain:r38170 2012-12-04 08:34:17 +0900
README.EXT と README.EXT.ja を RDoc のマークアップ記法で書くように変換して modeline も Text -> RDoc に変更しています。
naruse:r38171 2012-12-04 10:01:34 +0900
parse.y で parser->enc を利用しているところを current_enc に置き換えています。 current_enc はマクロで parser->enc に展開されるので内容には変化ありません。
naruse:r38172 2012-12-04 10:01:37 +0900
Net::HTTP.proxy_class? で未初期化のインスタンス変数を参照する可能性があったので存在チェックして、結果は必ず true or false で返すようにしています。 [ruby-core:50470] [Bug #7494]
ko1:r38173 2012-12-04 13:57:50 +0900
Ruby VM のオペランド融合の最適化を有効にしています。 オペランド融合というのは命令と特定のオペランドの値の組合せを特別な命令としてしまって、引数(オペランド)の取り出しを省くことによる高速化だったと思います。 とりあえず元々定義されていた融合はいくつか削って getlocal, setlocal, putobject とあるオペランドの組合せだけ融合した命令を生成するようにしています。 るびまの連載YARV Maniacs にあるかと思ったけどオペランド融合についてはなさそうですね。また insns.def の命令の実装の部分でループカウンタとその上限値に rb_num_t と VALUE を使っていたのをそれぞれ int にして警告除去しています。
nobu:r38174 2012-12-04 16:23:20 +0900
marshal.c で GC のマーク漏れに繋がるコンパイラ最適化の抑制のために volatile をつけていた変数を RB_GC_GUARD() で保護するようにしています。 また variable.c でも RB_GC_GUARD() による保護を追加しています。
nobu:r38175 2012-12-04 16:23:25 +0900
marshal.c でメソッドを呼べるかどうか rb_obj_respond_to() でチェックして rb_funcall2() で呼ぶという処理をしているところがいくつかあり、それらを rb_check_funcall() でまとめて実行するようにしています。
nobu:r38176 2012-12-04 16:23:34 +0900
marshal.c で定数の探索に失敗した時の ArgumentError のメッセージに文字列オブジェクトを埋め込むのに %PRIsVALUE という指示子を使うように変更しています。
nobu:r38177 2012-12-04 16:24:21 +0900
svn property の変更の時のコミットメッセージなのですが、実際は r38144 の ChangeLog エントリの typo 修正じゃないかと思います。
drbrain:r38178 2012-12-04 16:50:48 +0900
RDoc に ChangeLog のパーサを追加しているようです。ほほう。
drbrain:r38179 2012-12-04 16:54:13 +0900
r38168 で .document に doc/NEWS-?-?-? を追加しましたが doc/NEWS-* という記法でまとめています。また doc/ChangeLog-* も RDoc の処理対象に含めています。
nobu:r38180 2012-12-04 16:57:58 +0900
今度こそ r38179 で追加されたファイルの svn property 設定。
ngoto:r38182 2012-12-04 18:00:23 +0900
拡張ライブラリ fiddle は dl と互換性があることになっているみたいなのですが Fiddle::Import#import の引数の仕様が DL::Function.new と揃っていなかったので、引数を省略できるようにしています。 [ruby-core:50405] [Bug #7484]
ngoto:r38183 2012-12-04 18:08:12 +0900
ext/dl/lib/dl/types.rb から ext/fiddle/lib/fiddle/types.rb に移動してモジュール名などを改名して DL から Fiddle へ移植しています。
ngoto:r38184 2012-12-04 18:55:07 +0900
r38054 で Windows 版で make test-all 時に Fiddle を利用するようにした時に DL との互換性が完全でなかったためにテスト側を修正して対応した部分を revert しています。 r38182, r38183 で Fiddle と DL の互換性を改善した結果不要になった対処を消しているということだと思います。
nobu:r38185 2012-12-04 23:54:21 +0900
r38151 で bitblt と answer の命令については毎回 rb_intern() でシンボル作成するようにしたので template/id.h.tmpl からその2つを削除しています。
svn:r38187 2012-12-05 00:10:23 +0900
version.h の日付更新。