ruby-trunk-changes 2020-07-10

今日は vm_push_frame() のちょっとした最適化や MJIT 有効化時の SEGV の修正などがありました。

[e1bbb9ea9c] Jeremy Evans 2020-07-09 21:47:13 UTC

Kernel#load の rdoc 用コメントに、先頭に "." や ".." を含む相対パスの時と、それがない相対パスの時の挙動の違いについての説明を強化しています。 [ruby-core:99048] [Bug #16988]

[7a479b30b6] git 2020-07-09 21:50:04 UTC

version.h の日付更新

[ba81bc24e6] Masataka Pocke Kuwabara 2020-07-09 22:01:10 UTC

標準添付ライブラリ delegate の instance_methods, public_instance_methods, instance_method などのメソッドを探すメソッドで 委譲先のクラスに後から追加されたメソッドに対応できるように対応を追加しています。 [ruby-core:98929] [Bug #16982]

[db7f3496dd] 卜部昌平 2020-07-06 02:51:53 UTC

vm_insnhelper.c の vm_push_frame() が戻り値に rb_control_frame_t を返していたのをやめています。どこでも戻り値は見てなかったとのこと。

[1d93705d6a] 卜部昌平 2020-07-06 03:53:37 UTC

vm_insnhelper.c の vm_push_frame() から debug counters の処理を vm_push_frame_debug_counter_inc() という関数に切り出すリファクタリング

[4b8170ce80] 卜部昌平 2020-07-06 05:58:57 UTC

同じく vm_push_frame() の中の VM_ASSERT() で VM_ENV_DATA_INDEX_XXX の定数の値のチェックをしていたところは静的にチェック可能なので関数外で STATIC_ASSERT() でチェックするように変更しています。

[215c6fa3d0] 卜部昌平 2020-07-06 06:39:26 UTC

CHECK_VM_STACK_OVERFLOW0() という VM スタックのオーバーフローチェックのためのマクロの実装を RUBY_CONST_ASSERT() を使っていたところを STATIC_ASSERT() を利用するようにしています。

[0e276dc458] 卜部昌平 2020-07-06 06:10:10 UTC

vm_push_frame() で cfp の指す構造体の各メンバーのセットを構造体への代入でまとめて書くようにリファクタリングしています。

[e4ee992099] 卜部昌平 2020-07-07 00:02:22 UTC

1d93705d6a76f805d1ca5153cb5f4c59ce58c754 で切り出した vm_push_frame_debug_counter_inc() でテーブルを使った書きかたを if 文で分岐して明示的に RB_DEBUG_COUNTER_INC() を呼ぶように変更しています。ささださんの意見による変更らしいです。

[a82252df42] Nobuyoshi Nakada 2020-07-10 03:48:47 UTC

同じく 1d93705d6a76f805d1ca5153cb5f4c59ce58c754 で切り出した vm_push_frame_debug_counter_inc() の引数の型名の typo 修正。

[4989987419] Nobuyoshi Nakada 2020-07-10 04:02:31 UTC

debug counters を操作するマクロ RB_DEBUG_COUNTER_INC_IF() および RB_DEBUG_COUNTER_INC_UNLESS() で条件の引数は !! を使って真偽値として評価されるようにしています。環境によっては型が幅の小さいサイズにキャストされる警告が出るようです。

[7fa3c71bec] Takashi Kokubun 2020-07-10 07:42:43 UTC

よく理解できてませんが MJIT で JIT コンパイル用に実行時に生成するソースコードで send 命令で C 実装のメソッドの呼び出しする時の CALL_DATA に命令の operand を使ってたのを、実行時(JIT コンパイルされたコードが動く時)の callinfo を埋め込んだものを作って使うようにしています。 SEGV することがあったのを修正しているそうです。

[615758bd82] Takashi Kokubun 2020-07-10 07:47:26 UTC

7fa3c71becd6d9b11d1574b3537a3b2993a7046c で追加したテストでコメントの説明を修正しています。

[82489f0242] Kazuhiro NISHIYAMA 2020-07-10 10:27:11 UTC

tool/lib/vcs.rb でパッケージ作成時にコミットログから ChangeLog 生成する処理で git notes でコミットログの修正をする時に行番号のずれが生じた時の処理を追加しています。notes での修正が複数あって先の修正で行数が変化した場合のためかな。