ruby-trunk-changes r60506 - r60536

今日も主に rb_thread_t から rb_execution_context_t への変更や IO#puts の writev(2) 対応の不具合修正などがありました。

ko1: r60506 2017-10-28 19:35:55 +0900

vm_exec() の引数も rb_thread_t から rb_execution_context_t に変更。あれ、vm_exec() はもうしてなかったけ…。あれは vm_exec_core() か。

ko1: r60507 2017-10-28 19:43:30 +0900

rb_vm_rewind_cfp() も引数を rb_thread_t から rb_execution_context_t に変更。

ko1: r60508 2017-10-28 19:47:19 +0900

rb_vm_stack_to_heap() と rb_vm_get_binding_creatable_next_cfp() も引数を rb_thread_t から rb_execution_context_t に変更。

ko1: r60509 2017-10-28 19:55:35 +0900

vm_normal_frame(), vm_cfp_svar_get(), vm_cfp_svar_set() などの関数も引数の rb_thread_t を rb_execution_context_t に変更。

ko1: r60510 2017-10-28 19:59:37 +0900

vm_iter_break() の引数の rb_thread_t を rb_execution_context_t に変更。

ko1: r60511 2017-10-28 20:02:16 +0900

REWIND_CFP() というマクロ内で GET_THREAD() を使ってたのは ec だけで良くなったので GET_EC() に変更。

ko1: r60512 2017-10-28 20:04:08 +0900

vm_define_method() の引数の th はもう使わなくなったので削除しています。

ko1: r60513 2017-10-28 20:11:17 +0900

rb_thread_method_id_and_class() も引数の rb_thread_t を rb_execution_context_t に変更したうえで rb_ec_frame_method_id_and_class() に改名しています。

ko1: r60514 2017-10-28 20:15:56 +0900

rb_vm_make_binding() も引数の rb_thread_t を rb_execution_context_t に変更しています。

ko1: r60515 2017-10-28 20:20:17 +0900

rb_bug() と rb_bug_context() で rb_source_loc() を呼ぶかどうかのチェックを GET_THREAD() があるかどうかから GET_EC() をみるように変更しています。

ko1: r60516 2017-10-28 20:22:15 +0900

method_definition_set() で rb_vm_get_ruby_level_next_cfp() を呼び出すのに rb_thread_t はいらなくなったので GET_EC() を使うように変更しています。

ko1: r60517 2017-10-28 20:41:08 +0900

rb_longjmp() と get_thread_errinfo(), exc_setup_message(), setup_exception(), rb_longjmp() なども引数の rb_thread_t を rb_execution_context_t に変更したり改名したりしています。

ko1: r60518 2017-10-28 20:43:17 +0900

proc_new() で GET_THREAD() が不要になったので GET_EC() を呼ぶように変更しています。

ko1: r60519 2017-10-28 20:46:32 +0900

rb_block_arity(), rb_block_min_max_arity(), rb_mod_define_method() などの関数でも GET_THREAD() は不要になったので GET_EC() を使うように変更しています。

ko1: r60520 2017-10-28 20:52:56 +0900

call_method_data(), call_method_data_safe(), rb_vm_call() などの関数の引数も rb_thread_t から rb_execution_context_t に変更しています。

ko1: r60521 2017-10-28 21:23:51 +0900

stack_check(), rb_method_call_status(), call_method_entry(), check_funcall_xxx() 系の関数などなども rb_thread_t を rb_execution_context_t に変更したり、GET_THREAD() を GET_EC() に変更したりしています。

ko1: r60522 2017-10-28 22:22:04 +0900

rb_threadptr_backtrace_xxx() 系の関数群を rb_ec_backtrace_xxx() と改名して引数も rb_execution_context_t に変更しています。

eregon: r60523 2017-10-29 00:14:55 +0900

ruby/mspec に upstream の更新をマージしています。

svn: r60524 2017-10-29 00:14:56 +0900

version.h の日付更新。

eregon: r60525 2017-10-29 00:15:48 +0900

spec/ruby に upstream からの更新をマージしています。

svn: r60526 2017-10-29 00:15:52 +0900

r60525 のファイル末尾の改行追加しています。

svn: r60527 2017-10-29 00:15:52 +0900

r60525 の新規追加ファイルの svn property 設定。

ktsj: r60528 2017-10-29 00:37:00 +0900

命令列の disassemble で使う rb_insn_operand_intern() で VM_CALL_ARGS_SIMPLE フラグの時の処理に maybe not reachable とコメントが書かれてましたが、今は無引数のメソッド呼び出しなどで使うみたいでコメント削除しています。

eregon: r60529 2017-10-29 01:15:46 +0900

spec/ruby の C API テスト用のビルドコマンドのファイルを収集してるところで、make install していなくても動くように RbConfig.ruby を参照しているところで ENV["RUBY_EXE"] を参照するようにしています。

kazu: r60530 2017-10-29 01:34:30 +0900

IO#close_read と IO#close_write の rdoc 用コメントで 2.3 以降は close 済みの IO に呼んでも無視されて IOError は発生しないことを追記しています。

eregon: r60531 2017-10-29 02:45:46 +0900

ruby/spec でテスト用の拡張ライブラリのビルドが it のブロック中で行なわれていたのを外に出しています。

eregon: r60532 2017-10-29 05:04:52 +0900

r60529 の再修正。 ENV["RUBY_EXE"] は絶対パスが入ってなかったので参照するのはやめています。なくてもいいみたい?

nobu: r60533 2017-10-29 08:54:16 +0900

共有ライブラリで export しない symbol を決めている部分で threadptr に追加して rb_ec_ で始まる関数も export しないようにルールを追加しています。

nobu: r60534 2017-10-29 09:43:34 +0900

io_fwritev() で引数が文字列オブジェクトでなかった時のために rb_obj_as_string() で変換するようにしています。 [ruby-core:59408] [Feature #9323]

nobu: r60535 2017-10-29 14:46:23 +0900

IO#write の複数引数対応(writev(2) 対応)でバッファが有効な時は io_fwrite() を使って通常の出力をするようにしています。 テストで pipe への書き込みで EPIPE が発生していた現象の対応みたいですが、io_fwritev() から呼ばれてる io_binwritev() も fptr->wbuf は考慮するようになってそうですけどね。バッファに入れずに実際に書くから EPIPE が発生する(従来はバッファに入れるだけですぐには実際に書かず、finalizer でエラーが発生してたので無視されてたそうです)ということです。まじか。/ [ruby-core:83578] [Feature #14042]

ktsj: r60536 2017-10-29 15:16:10 +0900

r60440 の rb_execution_context_t を切り出す変更に追随して .gdbinit で参照してた変数名を変更しています。