ruby-trunk-changes r64735 - r64740

今日は VM 命令の PC 操作を極力共通部分にまとめる最適化のリトライなどがありました。

k0kubun: r64735 2018-09-13 21:29:57 +0900

OPT_CALL_FASTPATH というマクロを 0 にすると CI_SET_FASTPASS() が効果を持たなくなるという意図で存在してましたが、実際には既に 0 にすると動かなくなる状態だったのでこのマクロでの on/off はなくしています。

k0kubun: r64736 2018-09-13 22:59:25 +0900

ISeq の binary dump/load の関数 iseq_ibf_dump() と iseq_ibf_load()、ibf_load_iseq_complete() といった関数は static ではないので rb_ の prefix を追加しています。

shyouhei: r64737 2018-09-14 16:44:44 +0900

r62051 で試したものの revert された ADD_PC を VM 命令の個別の処理から最後の共通部分に移動する最適化を、r64677 で導入した VM 命令の leaf フラグを利用して再度実装しています。コードサイズ削減と PC 操作を極力まとめてするようにして cache hit 率を上げるための最適化のようです。

svn: r64738 2018-09-14 16:44:45 +0900

version.h の日付更新。

shyouhei: r64739 2018-09-14 16:57:19 +0900

r64737 でインデントにタブを使ってたので、新規部分はスペースを使う方針に合わせてスペースに変換しています。

shyouhei: r64740 2018-09-14 17:27:44 +0900

r64712 および r64731 で警告除去のために引数に cast 追加してた hrtime_update_expire() のデバッグメッセージ出力ですが、フォーマット指示子に PRI_64_PREFIX の後に "u" をつけてましたが、それを PRIu64 というマクロを使うようにしています。PRIu64 というマクロは C99 で導入されてるので、なかったら自前で定義しておくようにしています。