ruby-trunk-changes 2023-04-02

今日は主に RJIT のサポートするメソッド定義のパターンの拡張などがありました。

[175538e433] Takashi Kokubun 2023-04-01 17:17:57 UTC

vm_callinfo.h の enum vm_call_flag_bits のコメントを行コメントに変更し、一部コメントを追加しています。

[df1b007fbd] Takashi Kokubun 2023-04-01 17:21:52 UTC

enum vm_call_flag_bits の定数 VM_CALL_BLOCKISEQ_bit はもう未使用になっていたので削除しています。

[bdbf663cef] Takashi Kokubun 2023-04-01 18:04:51 UTC

GitHub Actions の make test-bundled-gems で typeprof のテストのエラーを無視するようにしています。 おそらく df1b007fbd64363067539ff7e89aff6368d605ab の削除の影響で失敗しはじめたようなので修正するまで止めておくようにしています。

[d71db90c68] Takashi Kokubun 2023-04-01 22:12:50 UTC

bdbf663cef31e2194bf87ae5c11dfe5525316ca8 で bundled gems の typeprof のテスト実行のエラーを無視したのを revert して gems/bundled_gems の typeprof のテストに使う commit hash の指定を追加しています。

[0973b93e49] Takashi Kokubun 2023-03-28 04:58:50 UTC

RJIT の実装で ruby で定義された(ISeq でできた)メソッドの呼び出しの処理を新規に書き下しているようです。これ以降でこのコミットで追加した jit_call_iseq というメソッドに機能を追加していっているみたいです。

[cfea319772] Takashi Kokubun 2023-04-01 23:59:19 UTC

0973b93e495bd39da5032747fbc5051bb226c1a9 で追加した RJIT の実装のメソッド jit_call_iseq に jit_call_iseq_setup から移行しています。

[f42cf3fd1e] Takashi Kokubun 2023-04-02 00:10:19 UTC

0973b93e495bd39da5032747fbc5051bb226c1a9 で追加した RJIT の実装のメソッド jit_call_iseq に VM 命令 invokeblock のコンパイルの処理も移行しています。

[249fe18e8f] Takashi Kokubun 2023-04-02 00:24:06 UTC

RJIT のメソッド引数の渡しかたなどによる side exit のカウンタの不要になったものを削除しています。

[28db75af66] Takashi Kokubun 2023-04-02 04:03:10 UTC

RJIT で生成するコードでマシンスタックのオーバーフローチェックの位置を前のほうに移動しているようです。

[90cdc5b8ba] Takashi Kokubun 2023-04-02 04:13:15 UTC

RJIT のメソッド呼び出しの処理を移行した jit_call_iseq メソッドで control stack frame の pop のタイミングを変更しています。一貫性やコードの理解しやすさのため?

[e45ed2da50] Takashi Kokubun 2023-04-02 04:23:36 UTC

RJIT で side exit する時に保存しておいたスタックサイズの情報を復旧させるようにしているようです。

[2ce5cfa2be] Takashi Kokubun 2023-04-02 04:34:19 UTC

RJIT の String#concat メソッドの専用の実装で stack pointer だけ保存していたのを pc も保存しておくようにしています。GC からの保護のため?

[ee52255f93] Takashi Kokubun 2023-04-02 04:42:28 UTC

RJIT に 0973b93e495bd39da5032747fbc5051bb226c1a9 で追加した jit_call_iseq メソッドで JIT コンパイルをあきらめる条件を追加しています。

[bf2617b8a6] Takashi Kokubun 2023-04-02 04:47:28 UTC

RJIT に 0973b93e495bd39da5032747fbc5051bb226c1a9 で追加した jit_call_iseq メソッドで JIT コンパイルをあきらめる条件を修正しています。

[87dc06ed24] Takashi Kokubun 2023-04-02 05:39:15 UTC

RJIT の disasm オプションつきの時に生成するコメントの行番号の計算を修正しているようです。

[a077b7e36b] Takashi Kokubun 2023-04-02 04:52:35 UTC

RJIT に 0973b93e495bd39da5032747fbc5051bb226c1a9 で追加した jit_call_iseq メソッドで呼び出すメソッドが rest 引数を受け取るように定義されていた時のサポートを追加しています。

[6c55c3eb7f] Takashi Kokubun 2023-04-02 06:07:21 UTC

rjit_c.c の rjit_rb_ary_subseq_length() という関数に static 修飾子を追加しています。

[1b475fcd10] Takashi Kokubun 2023-04-02 06:06:45 UTC

array.c で RJIT から呼ぶために rb_ary_unshift_m() を wrap しただけの rb_yjit_rb_ary_unshift_m() という関数を定義していましたが、これを削除して rb_ary_unshift_m() 自体の static 修飾子を削除しています。

[3a683964a0] Nobuyoshi Nakada 2023-04-02 08:56:12 UTC

tool/leaked-globals の出力に色づけを追加しています。

[9e1ff2462b] Nobuyoshi Nakada 2023-04-02 09:11:59 UTC

tool/leaked-globals で関数名などのシンボルを得るための nm コマンドに --no-llvm-bc オプションを追加するためのチェックの位置を最初のほうに移動しています。元も使う位置よりは前でしたが nm コマンドがそもそも使えない時に早めにエラーにするため?