ruby-trunk-changes 2021-05-20

今日は主に MJIT の不具合修正や peephole optimization による TracePoint のイベント発火がなくなる不具合の修正などがありました。

[63663bb459] Nobuyoshi Nakada 2021-05-20 05:31:49 UTC

complex.c の nucomp_false() という Complex#real? メソッドを実装してる関数(ただ Qfalse を返してるだけ)の関数名を nucomp_real_p_m() に改名しています。

[821e3c128f] git 2021-05-20 05:35:14 UTC

version.h の日付更新

[5026f9a5d5] Yusuke Endoh 2021-05-20 10:13:39 UTC

VM 命令列にコンパイルする時の peephole optimization で jump 命令の飛び先で再度 jump しているのを直接 1回で jump するようにする最適化が場合によっては trace が省略されてしまって TracePoint でのイベント発火が消えてしまうことがあったようなので、insn_info.events を調べてそういう場合は最適化しないようにしています。 [ruby-core:103887] [Bug #17868]

[dfe21ef7a1] Takashi Kokubun 2021-05-20 10:33:28 UTC

MJIT 用の子プロセスで動く mjit_worker() のメインループ部分の条件で pending_stale_p という static 変数をチェックしてたのを削除しています。コミットログに詳しいシナリオが書いてますが、レアケースで MJIT 用の worker の処理が詰まってしまうので、その対策としてとりあえずシンプルに直してみたとのこと。