ruby-trunk-changes 2020-03-13

今日は MJIT のメソッドキャッシュ実装変更対応の追加修正などがありました。

[289bdb64d9] Nobuyoshi Nakada 2020-03-12 13:58:04 UTC

make prepare-gems というターゲットを追加してここで bundled gems の .gem ファイルダウンロードと展開を行うようにしています。

[46f4cfb162] Nobuyoshi Nakada 2020-03-12 14:38:14 UTC

そして make update-gems が refresh-gems から切り出されたたためその前の update-bundled_gems の完了まで待つように defs/gmake.mk での依存関係の調節を修正しています。今更ながら(既に類似のことはやられている)この defs/gmake.mk での同時に実行されるターゲットによって依存関係を動的につけるのすごいな。

[768bd6e533] git 2020-03-12 15:27:40 UTC

version.h の日付更新

[00dc8c0246] Jeremy Evans 2020-03-12 22:45:03 UTC

よくわかりませんが compile.c に OpenBSD でのみ STRICT_ALIGNMENT マクロを定義する preprocessor 分岐を追加しています。

[a90117c8c9] Takashi Kokubun 2020-03-13 01:43:01 UTC

標準添付ライブラリ net/ftp のテストで test_abort_tls を MJIT が有効になっている時に skip しています。 --jit-wait オプションつきだと失敗することがあるからとのこと。

[8562bfd150] Takashi Kokubun 2020-03-13 05:21:31 UTC

rb_iseq_mark() の mjit_iseq_cc_entries() の領域を mark する処理を mjit_mark_cc_entries() という関数に切り出して mjit.c に追加しています。

[43e18c68f4] Takashi Kokubun 2020-03-13 05:23:48 UTC

8562bfd1501a69aa736ba4f699a77940b2cdd9b1 で切り出した mjit_mark_cc_entries() で body->jit_unit->cc_entries の要素を舐める時のループを回す数を子 ISeq のぶんも含めた body->jit_unit->cc_entries_size のほうを使うように修正しています。

[0cd7be99e9] Takashi Kokubun 2020-03-13 05:51:33 UTC

構造体 struct compile_status から cc_entries メンバーで call cache の位置を指すのをやめて cc_entries_index というインデックスで参照するようにしています。 4bcd5981e80d3e1852c8723741a0069779464128 の変更時に call cache の領域を root iseq に統合しましたが、ポインタで持っていると指している root iseq 内のバッファが realloc(3) で確保しなおされた時に不正な領域を指したままになってしまう可能性があったため。

[88f4ebac83] Nobuyoshi Nakada 2020-03-13 06:31:21 UTC

make gems/xxx.gem のようなターゲットで個別に bundled gem 更新できるようにしています。