ruby-trunk-changes r58435 - r58448

今日は昨日の newhash 命令の最適化の write barrier 漏れ修正などがありました。

ko1: r58435 2017-04-22 00:00:30 +0900

r58434 に続いて r58427 の newhash 命令の実装の最適化の修正続き。 st_insert() で値を格納する際に GC 用の Writer Barrier が必要だったみたいで hash_insert_raw() に VALUE を渡して key と val それぞれについて RB_OBJ_WRITTEN() を呼び出しています。不要な時はこの引数に Qfalse を渡すようにしているようです。

svn: r58436 2017-04-22 00:00:31 +0900

version.h の日付更新。

normal: r58437 2017-04-22 05:38:58 +0900

BasicSocket#read_nonblock のテストでマシンのパフォーマンスが悪くて読み込めると思っていたところで :wait_readable がかえってくることがあるんじゃないかということで、IO.select でもうちょっと待たせるようにしています。 [ruby-core:80817] [Bug #13491]

nobu: r58438 2017-04-22 08:16:43 +0900

enc/jis/props.h というヘッダファイルは自動生成されるファイルだったのでリポジトリから削除しています。make realclean したら消えちゃったよ? というので発覚したみたいです。 [ruby-core:80823] [Bug #13493]

ko1: r58439 2017-04-22 09:10:28 +0900

Makefile.in の enc/jis/props.h のターゲットに $(srcdir)/ を頭に付けてソースディレクトリに作るようにしています。

nobu: r58440 2017-04-22 09:18:08 +0900

Makefile.in の after-update の依存関係を common-srcs から prereq に変更して、common.mk の common-srcs の依存関係に incs を追加しています。 incs は vm 系や r58438 で消した enc/jis/props.h を生成するルールで、なにかしらのターゲットから生成する依存が足りてなかったんでしょうね。

nobu: r58441 2017-04-22 09:27:14 +0900

拡張ライブラリ fiddle で libffi をダウンロードしてきた時のチェックする checksum に sha512 を追加しています。今どき MD5 だけというのは緩かったですね。

normal: r58442 2017-04-22 10:08:15 +0900

構造体を padding を減らして詰めるように宣言するためのマクロ PACKED_STRUCT_UNALIGNED() の定義をconfigure でなにもしないように定義していたのを削除しています。 r46914 で universal binary のために include/ruby/defines.h で既に定義済みなら再定義しないようになっていたため、常に何もしない実装になっていたようです。これに対するテストも追加しています。 RUBY_PLATFORM をみて x86Linux でのみテストするようにしています。

kazu: r58443 2017-04-22 11:04:35 +0900

ext/.documents から既に存在しなくなったファイルを削除しています。

nobu: r58446 2017-04-22 17:19:33 +0900

hash.c のインデント修正。

nobu: r58447 2017-04-22 17:19:34 +0900

r58431 と同様に macOS 上での大文字小文字を区別する case sensitiveファイルシステムで失敗するテストを修正しています。 [ruby-dev:50093] [Bug #13489]

nobu: r58448 2017-04-22 17:32:33 +0900

parse.y の ripper_compile_error() と parser_compile_error() という関数の宣言に PRINTF_ARGS() というマクロを使って format 文字列を引数に受け取る関数であることを宣言してチェックを強化(できるコンパイラでは)しているようです。