ruby-trunk-changes r64493 - r64509

今日は coverage 関連の変更などがありました。

naruse: r64493 2018-08-21 22:39:24 +0900

mswin の CI が壊れてるとして r64447 で r64407 を revert していましたが、これは関係なかったみたいで戻しています。

akr: r64494 2018-08-21 23:40:18 +0900

time.c の calc_wday() の引数 year を year_mod400 に改名しています。呼び元で 400 での mod にして渡しているみたいですね。

kazu: r64495 2018-08-21 23:57:56 +0900

rb_funcall() のテストのための拡張ライブラリ ext/-test-/notimplement/ で Bug::NotImplement を Module として定義していたのを Class にしています。インスタンスメソッドとしてのテストが追加したかった?

naruse: r64496 2018-08-22 00:57:23 +0900

rubyspec の socket のテストで bind せずに accept するやつが AIX でもうまく通らなかったので platform_is_not の guard に追加しています。

svn: r64497 2018-08-22 00:57:24 +0900

version.h の日付更新。

eregon: r64498 2018-08-22 05:28:29 +0900

r64483 の rubyspec の win32ole のテストのリトライ回数の増加を revert しています。ローカルのマシンの問題だったみたいでリブートしたら直ったわーということみたいです。

eregon: r64499 2018-08-22 05:28:45 +0900

r64496 で aix も除外するプラットフォームに追加した rubyspec の bind してない socket への accept のテストですが、逆に Linux でのみ走るように条件を書き換えています。

eregon: r64500 2018-08-22 07:01:18 +0900

mspec を upstream リポジトリからマージしています。

eregon: r64501 2018-08-22 07:01:34 +0900

rubyspec の upsteram から最新版をマージしています。

eregon: r64502 2018-08-22 07:17:37 +0900

.travis.yml で rubyspec を rvm で ruby 2.3.7 をインストールして 2.3.7 で mspec を実行するようにしています。version guard をちゃんと動かすためって書いてあるけど、これはどういうことだろ。 [Feature #15004]

kazu: r64503 2018-08-22 13:04:06 +0900

BITFIELD() というマクロですが型名だけ受け取るようになってたのを、型名、メンバー名、ビット数を受け取るマクロとして定義しなおしています。コンパイラによってはエラーになってたそうです。受け取った引数を使わないのがだめとかかな。型部分をマクロにしちゃだめ、というのはなさそうだし。

mame: r64504 2018-08-22 14:24:50 +0900

拡張ライブラリ coverage の Coverage.result で結果を取り出した時の rb_reset_coverages() のタイミングで全 ObjectSpace から RubyVM::InstructionSequence のオブジェクトに対して coverage 用のカウンターを削除する処理を入れています。

mame: r64505 2018-08-22 14:24:51 +0900

make help の表示で make check と make exam の説明を r64270 で make check が test-spec も含むようになったのに追随させています。

nobu: r64506 2018-08-22 19:22:02 +0900

r64504 で追加した rb_iseq_remove_coverage_all() の宣言や定義で引数を明示的に void と指定するようにしています。

mame: r64507 2018-08-22 19:38:55 +0900

構造体 rb_ast_t にあった GC 管理用の mark 用配列を格納する mark_ary を構造体 struct node_buffer_struct に移動しています。struct node_buffer_struct は rb_ast_t から参照されてるので場所が変わっただけですね。コミットログによると rb_ast_t にメンバーを追加したいけど T_IMEMO のためサイズに制限があるのでそのために追い出したということだそうです。

mame: r64508 2018-08-22 19:38:56 +0900

parse.y の struct parser_params から coverage を削除して、coverage 計測用のデータの初期化は rb_iseq_new_top() に移動して ISeq の生成時に作るようにしています。そのために parse.y の yycompile() ではテーブルの初期化に必要なスクリプト行数を rb_ast_body_t::line_count にセットしておくようにしています。

mame: r64509 2018-08-22 20:09:47 +0900

r61350 で tracecoverage 命令を line coverage のためにも使うようにしていましたが、これをやめて trace 命令の event フラグに line coverage 用のものを追加してこれを利用するようにしています。これってほぼ r61350 を revert している感じですかね。 [ruby-core:83758] [Feature #14104]
[追記][Bug #14191] の修正のために一時的に r61350 で trace 命令を復活させてたのを、再度削除に挑戦した、というものだったようです(コメント欄参照)[/追記]