ruby-trunk-changes 2022-07-10

今日は主に gc.c のリファクタリングがありました。

[b16f44ad4f] Nobuyoshi Nakada 2022-07-05 15:57:59 UTC

gc.c の rb_raw_obj_info() で rb_raw_obj_info() を利用するようにして rb_obj_info() による C の文字列リテラルを返すのを利用しないようにしています。なんでだろ。

[fbe3651466] Nobuyoshi Nakada 2022-07-05 13:22:45 UTC

gc.c で asan_poisoned_object_p() + asan_unpoison_object() の呼び出しのペアを asan_unpoison_object_temporary() という関数の呼び出しにまとめるリファクタリング

[51025a9013] Nobuyoshi Nakada 2022-07-05 13:39:08 UTC

gc.c の rb_raw_iseq_info() や rb_raw_obj_info() の引数 buff_size の型を int から size_t に変更しています。

[2bf0313561] Nobuyoshi Nakada 2022-07-05 13:55:27 UTC

gc.c のオブジェクトのデバッグ情報を出力するために使う APPENDF() マクロの引数を可変長引数にしてフォーマット文字列を受け取って引数を埋め込めるようにしています。

[a006dcb73f] Nobuyoshi Nakada 2022-07-05 15:59:23 UTC

2bf0313561304506cf3cceba6ef4c66a6f2c09b0 で APPEND_F() がフォーマット文字列を受付けるようになったので、元の APPEND_F() に相当するマクロを APPEND_S() として追加して、埋め込みが不要な箇所ではこちらを利用するようにしています。

[233054a609] Nobuyoshi Nakada 2022-07-06 15:28:45 UTC

gc.c のオブジェクトの情報をダンプする時のバッファ管理の変数 obj_info_buffers_index を rb_atomic_t 型にして RUBY_ATOMIC_CAS() などを利用して並列処理を考慮するようにしています。 複数 Ractor 間での並用のため?

[ec303e49af] Nobuyoshi Nakada 2022-07-05 15:23:49 UTC

gc.c の rb_raw_obj_info() の内容を rb_raw_obj_info_common() と rb_raw_obj_info_buitin_type() という 2つの関数に分割するリファクタリング

[b1b8172328] Nobuyoshi Nakada 2022-07-06 00:39:04 UTC

gc.c の rb_raw_obj_info() で asan_unpoison_object_temporary() と asan_poison_object() で ASAN 対策してメモリを触る処理をまとめてブロックのように書けるマクロ asan_unpoisoning_object() を追加しています。

[072a8bf760] git 2022-07-10 07:38:41 UTC

version.h の日付更新

[ec09ba58d1] Nobuyoshi Nakada 2022-07-10 08:56:36 UTC

gc.c の obj_info_buffers_index を最大値の制限つきで atomic に加算する処理を atomic_inc_wraparound() という関数に切り出すリファクタリング