ruby-trunk-changes r65636 - r65644

今日は define_method で作られたメソッドの呼び出し時の method entry の渡しかたの変更や macOS での 32bit バイナリのビルドエラー修正などがありました。

ko1: r65636 2018-11-09 10:02:13 +0900

rb_vm_invoke_bmethod() や invoke_iseq_block_from_c()、invoke_block_from_c_proc() などの引数に rb_callable_method_entry_t* を追加して rb_execution_context_t から method entry を取り出してたのを引数で外から指定するようにして、rb_execution_context_t のメンバー passed_bmethod_me は削除しています。 発生条件はよくわかりませんが define_method などで Proc オブジェクトから定義したメソッドの呼び出しのために passed_bmethod_me に一時的にセットしてたのが GC 時に問題をおこして SEGV することがあったようです。

svn: r65637 2018-11-09 10:02:20 +0900

r65636 のインデントのタブを空白に展開。

svn: r65638 2018-11-09 10:02:20 +0900

version.h の日付更新。

ko1: r65639 2018-11-09 10:13:20 +0900

r65636 の追加修正。vm_yield_with_cfunc() でも引数で rb_callable_method_entry* を受け取るようにして invoke_block_from_c_proc() 経由で呼ばれた時のその引数の me をそのまま渡すようにしています。

svn: r65640 2018-11-09 10:13:22 +0900

r65639 のインデントのタブを空白に展開。

yui-knk: r65641 2018-11-09 10:37:41 +0900

RubyVM::AST を RubyVM::AbstractSyntaxTree と改名しています。

shyouhei: r65642 2018-11-09 18:14:23 +0900

flo_div() で割る数が 0 だった時にそのまま除算せずに明示的に nan とか infinity を作って返すようにしています。

shyouhei: r65643 2018-11-09 18:44:49 +0900

util.c の ruby_scan_digits() と quorem() も NO_SANITIZE() を使って Undefined Behavior Sanitizer による unsigned integer overflow のチェックを抑制するようにしています。

nobu: r65644 2018-11-09 20:19:23 +0900

addr2line.c の macOSi386-darwin の環境向けのビルドエラー対策で型やマクロ名の _64 の suffix の有無を吸収するマクロ定義して使うようにしています。