ruby-trunk-changes r62397 - r62401

今日は MJIT の最適化命令をすりかえる最適化や、mjit.c のキャストの不具合修正などがありました。

nobu: r62397 2018-02-13 22:29:57 +0900

Enumerable#detect, #find や Enumerable#reverse_each の rdoc 用コメントのインデント修正やサンプルのコメント部分を行コメント化したりしています。 https://github.com/ruby/ruby/pull/1816

k0kubun: r62398 2018-02-14 00:58:38 +0900

MJIT で VM 命令 opt_aref をコンパイルする時に opt_send_without_block 命令にすりかえてコンパイルするようにしているようです。コミットログによると receiver が Hash や Array 以外の時の脱最適化で JIT のキャンセル(キャンセルがどういう事象なのかはちょっとわかってませんが)がおこるためペナルティが大きいので、osp_send_without_block のほうがトータルで速くなることがあるとのこと。

svn: r62399 2018-02-14 00:58:39 +0900

version.h の日付更新。

ko1: r62400 2018-02-14 10:50:59 +0900

test/ruby/test_exception.rb の test_thread_signal_location というテストメソッドが既知のバグのため通らないそうなので skip を追加しています。 [ruby-core:85536] [Bug #14474]

nobu: r62401 2018-02-14 14:11:02 +0900

mjit.c で関数ポインタ型を enum 型にキャストしてから比較しているところがありましたが、環境によってはポインタは enum (精度的には int)よりサイズが大きいので、enum にキャストしてしまうと上位ビットが消えて比較が誤って真になってしまう可能性があったので mjit_func_t のほうにキャストしてから比較するようにしています。