ruby-trunk-changes r59071 - r59075

今日は主に VM 命令列へのコンパイル時のエラーのメッセージの詳細化がありました。

nobu: r59071 2017-06-13 10:04:56 +0900

compile.c で VM 命令へのコンパイル時の不正な label の参照などのエラーのメッセージを詳しくしているみたいです。なんですけど BADINSN_ERROR っていうマクロは関数マクロとしてではない定義がされているけど関数マクロっぽく呼ばれていて、これどう展開されるんだろう…。
[追記]このマクロ最後に評価値として COMPILE_ERROR を返すような式になっていて、これが関数ポインタなのでその関数を呼ぶ、という形になっているそうでした。すげー。[/追記]

svn: r59072 2017-06-13 10:04:57 +0900

version.h の日付更新。

nobu: r59073 2017-06-13 10:31:32 +0900

compile.c の insn_set_sc_state() で LABEL::sc_state (たぶん VM スタックの状態を表すメンバ。stack caching ?)が不正だった時のデバッグメッセージを強化しています。

ko1: r59074 2017-06-13 11:52:33 +0900

r59071 の BADINSN_ERROR マクロで未初期化のポインタ変数を free() に渡す可能性があったので修正しています。

nobu: r59075 2017-06-13 12:20:12 +0900

r59073 の変更のために切り出した dump_disasm_list_with_cursor_dest() という関数を dump_disasm_list_with_cursor() に改名してさらに BADINSN_DUMP() というマクロで wrap してこれを呼ぶようにリファクタリングしています。