今日は VM 命令にその実装内からメソッド呼び出しがないことを示す leaf フラグの追加などがありました。
nobu: r64674 2018-09-10 22:05:34 +0900
appveyor.yml の build matrix に VisualStudio 140 でのビルドも追加しています。
kazu: r64675 2018-09-11 18:46:49 +0900
rb_bug() などでバックトレース表示にだすレポート先の URL に http でなく https のものを使うようにしています。
svn: r64676 2018-09-11 18:46:50 +0900
version.h の日付更新。
shyouhei: r64677 2018-09-11 18:48:58 +0900
VM 命令のフラグに leaf というのを追加して、VM_CHECK_MODE が 1以上の時に leaf フラグが正しく設定されているかを VM スタックにランダムな値を置いて上書きされていないかをチェックすることで確認するようにしています。とりあえず leaf フラグの導入と正しく判定できてるかのチェックだけで、これを使っていずれ最適化するつもりなのでしょう。 https://github.com/ruby/ruby/pull/1947
k0kubun: r64678 2018-09-11 19:58:33 +0900
r64677 の leaf フラグのチェックで rb_bug() の第1引数に変数を渡してたのでフォーマット指示子 "%s" のリテラルで埋め込むように修正しています。
k0kubun: r64679 2018-09-11 20:01:18 +0900
r64678 のさらに修正で rb_bug() に渡す文字列を rb_sprintf() で整形してたので、直接 rb_bug() で整形するようにしています。
nobu: r64680 2018-09-11 20:05:20 +0900
r64677 で leaf フラグチェックのためにプロセス起動時にランダムなバイト列を用意するために fill_random_bytes() の static を外してましたので ruby_fill_random_bytes() と改名しています。
k0kubun: r64681 2018-09-11 20:09:59 +0900
k0kubun: r64682 2018-09-11 20:26:15 +0900
tool/transform_mjit_header.rb で Init_XXX() 関数もヘッダに展開するようにしています。たぶん r64677 の VM_CHECK_MODE が 1以上の時の leaf フラグチェックで Init_vm_stack_canary() が必要になったからだと思います。