ruby-trunk-changes r63476 - r63488

今日は主にメモリの realloc, free 時に malloc_size の管理をするバージョンを使うように強化する変更がありました。

nobu: r63476 2018-05-21 21:24:47 +0900

ruby.c の ruby_init_loadpath_safe() からプラットフォーム毎のパス名の変換処理を dladdr_path() の中に移動して runtime_libruby_path() という関数名に改名しています。主に Windows 環境でのパスのエンコーディングの扱いについての処理がまとめられています。

nobu: r63477 2018-05-21 21:25:45 +0900

ruby.c の static 変数 libdir が ruby_init_loadpath_safe() の一部のブロック中でのみ利用されているので、このスコープに移動しています。

usa: r63478 2018-05-21 21:32:40 +0900

make golf で goruby がビルドされますが make goruby でもビルドできるようにしています。 sub make に GOLF=golf2 を渡してるのはなぜだろう。

usa: r63479 2018-05-21 21:36:22 +0900

make help で make goruby ターゲットも表示するようにしています。

k0kubun: r63480 2018-05-21 23:32:55 +0900

mjit_exec() で MJIT のオプション mjit_opts.wait のチェックを必要な時にまで遅延させるようにする最適化。

normal: r63481 2018-05-22 06:21:23 +0900

array.c の ary_resize_capa() および ary_shrink_capa() でバッファのメモリ realloc および free を SIZED_REALLOC_N() や ruby_sized_xfree() を使うようにして malloc 済みの容量を記録するようにしています。 malloc_usable_size の依存をやめるためってあるけど malloc_usable_size ってこの記録してる malloc 済みサイズと関係してるやつじゃなかったっけ、と思ったけどこれはライブラリ関数で確保済みメモリ容量を得るものを wrap してる関数みたいです。これらのライブラリ関数を呼ばなくてすむようにできるだけ正確に管理しよう、ってことですかね。 [Feature #10238]

svn: r63482 2018-05-22 06:21:25 +0900

version.h の日付更新。

normal: r63483 2018-05-22 06:40:54 +0900

r63481 と同様に load.c の loaded_features_index_clear_i() でも xfree() のかわりに ruby_sized_xfree() を利用するようにしています。

normal: r63484 2018-05-22 09:44:22 +0900

parse.y でも xfree() のかわりに ruby_sized_xfree() を、REALLOC_N() のかわりに SIZED_REALLOC_N() を使うようにしています。

normal: r63485 2018-05-22 10:13:08 +0900

string.c でも xfree() のかわりに ruby_sized_xfree() を、REALLOC_N() のかわりに SIZED_REALLOC_N() を利用するようにしています。

normal: r63486 2018-05-22 10:42:21 +0900

gc.c の rb_objspace_call_finalizer() で T_DATA 型オブジェクトの free 関数が未設定かどうかのチェックに -1 をキャストして使ってたのを RUBY_DEFAULT_FREE というそのための定数マクロを使うようにしています。内容は同じですが readability のために。

normal: r63487 2018-05-22 10:58:47 +0900

string.c の tr_trans() で未使用の警告が出る old という変数を MAYBE_UNUSED() マクロをつけて宣言して警告抑制するようにしています。

naruse: r63488 2018-05-22 16:31:36 +0900

rb_hash_bulk_insert() の宣言を internal.h から include/ruby/st.h に移動しています。 msgpack-ruby で使いたいとのこと。