ruby-trunk-changes r63840 - r63848

今日は Signal.signame などで signal の番号と名前の対応を持つテーブルの実装の変更や Time.utcうるう秒処理でファイルアクセスするので遅かったのを修正する変更などがありました。

nobu: r63840 2018-07-03 22:25:59 +0900

r63835 のコメントのインデント修正のみ。

nobu: r63841 2018-07-03 22:34:56 +0900

signm2signo() でシグナルの番号と名前を管理するテーブル siglist でシグナル名を埋め込みで持つようにして signm2signo() に長い名前を渡した時に事前にエラーにするようにしています。 https://github.com/ruby/ruby/pull/1904 [ruby-core:87767] [Bug #14893]

kazu: r63842 2018-07-04 00:25:49 +0900

r63841 で最長のシグナル名を持つ定数 LONGEST_SIGNAME を static const の変数にしていたのを enum での宣言にしています。変数を配列の宣言のサイズに使えないコンパイラ対策。enum だと大丈夫なのか。

svn: r63843 2018-07-04 00:25:50 +0900

version.h の日付更新。

normal: r63844 2018-07-04 06:29:18 +0900

mjit.h の JIT コンパイルで生成された関数ポインタのチェックで ptrdiff_t にキャストしてたのを uintptr_t にキャストするように変更しています。

nobu: r63845 2018-07-04 08:56:11 +0900

VM から使う専用の内部オブジェクトのメソッド core#hash_merge_kwd の実装を可変長引数から2引数受け取るように変更して常に 2つめの Hash オブジェクトを受け取るようにして内部の分岐を消しています。これにあわせて呼び元の分岐も変化してます。

normal: r63846 2018-07-04 10:26:31 +0900

timer_thread_sleep() の引数を rb_global_vm_lock_t からそれを含む rb_vm_t 全体に変更しています。コメントをみると readability のためらしい。 [Feature #14859]

normal: r63847 2018-07-04 10:26:36 +0900

internal.h の rb_warning_string() の宣言に PRINTF_ARGS() を付けてフォーマット文字列のチェックを行うようにしています。

naruse: r63848 2018-07-04 19:06:51 +0900

time.c の init_leap_second_info() という関数でうるう秒の処理の情報を取得しているところで処理が不要なのに known_leap_seconds_limit が 0 になっていなくて Time.utc で localtime(3) が呼ばれてその結果ファイルアクセス(/etc/tzinfo あたりを読み込むのかな)ため遅くなっていたのを修正しています。