ruby-trunk-changes r60813 - r60826

今日は主に NODE の位置情報の設定ミスの修正や trace 時に書き換えた命令を戻す方法の最適などがありました。

usa: r60813 2017-11-16 21:26:04 +0900

make update-gem で古い gem ファイルの削除の条件が誤っていたのを修正。

yui-knk: r60814 2017-11-17 08:13:24 +0900

演算子付き代入記号の時の左辺値のノードと右辺値を表す NODE_ARRAY の位置情報の column が代入文全体になっていたのを修正しています。

svn: r60815 2017-11-17 08:13:25 +0900

version.h の日付更新。

yui-knk: r60816 2017-11-17 13:25:48 +0900

NODE_GASGN, NODE_IASGN, NODE_LASGN など代入演算子の NODE で位置のカラムが正常にセットされてない不具合を修正しています。

ko1: r60817 2017-11-17 15:24:55 +0900

r60763 の trace 命令の削除と trace 用の命令の動的な書き換えで、trace を無効にした時に trace_ の prefix つきの命令を元に戻すのを一度に行うのではなくて、その命令の実行時に vm_trace() が呼ばれた時に戻すようにしています。なるほどー、これなら必要になるまで書き戻す処理が遅延できますし、vm_trace() でやるってことは一度戻したらもう trace の処理は実行されないので余計なオーバーヘッドも増えないわけですね。

svn: r60818 2017-11-17 15:24:56 +0900

r60817 の行末の空白除去。

ko1: r60819 2017-11-17 15:59:22 +0900

EXEC_EVENT_HOOK_ORIG() という関数マクロに ruby_vm_event_flags を渡す引数を追加して rb_exec_event_hook_orig() でなにやら VM_ASSERT() によるチェックを追加しています。たぶん event_flags は rb_vm_t に統一したから不要になったチェックを削ってかわりに念のため VM_ASSERT() を入れたのかな。

ko1: r60820 2017-11-17 16:29:07 +0900

rb_iseq_trace_set() で insn の数値についての VM_ASSERT() による assertion を削除しています。チェック内容が間違っていたそうです。

yui-knk: r60821 2017-11-17 16:39:15 +0900

添字付き代入(a[1] = x みたいなの)でも NODE_ATTRASGN の位置情報に右辺値の情報まで含まれてしまっていたのを修正しています。

ko1: r60822 2017-11-17 16:47:03 +0900

vm_trace.c の rb_exec_event_hooks() のリファクタリング。 goto 文で移動していたのを分岐を整理して書き直しています。

yui-knk: r60823 2017-11-17 17:23:06 +0900

node_assign_gen() で NODE_CALL というメソッド呼び出しについての NODE が代入の左辺として許容されてましたが、実際には使われてないので条件から削除しています。

knu: r60824 2017-11-17 18:48:47 +0900

標準添付ライブラリ set の rdoc コメントにサンプルコードを追加しています。 https://github.com/ruby/ruby/pull/1752

nobu: r60825 2017-11-17 21:16:30 +0900

parse.y の関数マクロ YYLLOC_DEFAULT() から first_loc, last_loc の設定をしている部分を RUBY_SET_YYLLOC() という関数マクロとして切り出して、yylex() から利用するようにリファクタリングしています。

nobu: r60826 2017-11-17 21:16:31 +0900

r60825 の続きで RUBY_SET_YYLOC() の処理の内容を rb_parser_set_location() という関数として定義して、マクロでは単にこれを呼ぶようにしています。