ruby-trunk-changes r60674 - r60698

今日は主に rb_thread_t から rb_execution_context_t への変更がありました。

ko1: r60674 2017-11-07 12:41:34 +0900

rb_threadptr_exec_event_hooks_orig() で rb_ec_thread_ptr() を何度も呼んでたのを、ローカル変数に格納して使いまわすようにリファクタリングしています。

svn: r60675 2017-11-07 12:41:35 +0900

version.h の日付更新。

ko1: r60676 2017-11-07 13:01:13 +0900

rb_threadptr_reset_raised() を rb_thread_t から rb_execution_context_t を受け取るように書き換えて関数名も rb_ec_reset_raised() に改名しています。また exec_hooks_body()、exec_hooks_precheck()、exec_hooks_unprotected()、exec_hooks_protected() も引数の rb_thread_t を rb_execution_context_t に変更しています。

ko1: r60677 2017-11-07 13:04:18 +0900

rb_threadptr_exec_event_hooks_orig() を rb_exec_event_hooks_orig() に改名しています。

ko1: r60678 2017-11-07 13:53:11 +0900

rb_postponed_job_t という構造体のメンバー th を削除しています。既に未使用になってました。

ko1: r60679 2017-11-07 14:01:51 +0900

rb_thread_t のメンバー method_missing_reason を rb_execution_context_t に移動しています。まだまだ th -> ec の移行は続くのかー。

ko1: r60680 2017-11-07 14:06:50 +0900

struct rb_debug_inspector_struct に存在してたメンバー th を ec に変更しています。また collect_caller_bindings() の引数の rb_thread_t を rb_execution_context_t に変更しています。

ko1: r60681 2017-11-07 14:08:09 +0900

rb_iseq_compile_with_option() で th 変数を消して GET_EC() を使うように変更しています。

ko1: r60682 2017-11-07 14:09:27 +0900

rb_gc_register_mark_object() で GET_THREAD()->vm をみてたところを GET_VM() に置き換えています。

ko1: r60683 2017-11-07 14:12:39 +0900

rb_threadptr_set_raised() の引数を rb_thread_t から rb_execution_context_t に変更して名前も rb_ec_set_raised() と改名しています。

ko1: r60684 2017-11-07 14:22:09 +0900

rb_thread_raised_{set,reset,p,clear}() などの関数マクロを rb_execution_context_t * 型の変数を受け取るようにして rb_ec_raised_... に改名しています。

knu: r60685 2017-11-07 14:28:14 +0900

拡張ライブラリ io/console の IO#raw の rdoc 用コメントにキーワード引数 min と time について説明を追加しています。

ko1: r60686 2017-11-07 14:39:02 +0900

struct rescue_funcall_args のメンバー th を ec に変更。だんだん局所的な構造体の変更に移行してきた。

ko1: r60687 2017-11-07 14:41:15 +0900

rb_threadptr_tag_state() の引数は rb_execution_context_t に変わっているので rb_ec_tag_state() に改名しています。

ko1: r60688 2017-11-07 14:41:43 +0900

rb_ec_tag_state() のコメントを引数の変更に追随させています。

ko1: r60689 2017-11-07 14:45:46 +0900

rb_load_internal0() の引数も rb_thread_t から rb_execution_context_t に変更しています。けどまだ中で rb_ec_thread_ptr() で th も取得してますね。th->top_self を参照してるので、もし将来的にこのへんも移動したら完全に ec だけになる、というロードマップがあるのかも。

ko1: r60690 2017-11-07 14:54:34 +0900

rb_threadptr_exec_event_hooks() と rb_threadptr_exec_event_hooks_and_pop_frame() は呼び元で pop_p という変数で分岐して呼びわけられてましたが、その実体は rb_exec_event_hooks_orig() という関数で結局引数 pop_p に同じ条件を渡してるだけだったので rb_exec_event_hooks_orig() を rb_exec_event_hooks() と改名して直接これを呼ぶようにしています。そして rb_threadptr_exec_event_hooks() と rb_threadptr_exec_event_hooks_and_pop_frame() は削除しています。

ko1: r60691 2017-11-07 15:01:16 +0900

ruby_current_vm()、ruby_current_thread()、ruby_current_execution_context()、ruby_vm_check_ints()、ruby_exec_event_hook_orig() などの関数を rb_current_vm()、rb_current_thread()、rb_current_execution_context() のように rb_ を prefix に変更しています。

ko1: r60692 2017-11-07 15:09:47 +0900

rb_threadptr_setup_exception() の引数を rb_thread_t から rb_execution_context_t に変更して rb_ec_setup_exception() に改名しています。

ko1: r60693 2017-11-07 15:14:00 +0900

vm_once_dispatch() の引数の rb_thread_t を rb_execution_context_t に変更し、ついでに引数の順番も変更しています。

mame: r60694 2017-11-07 15:36:07 +0900

rb_thread_terminate_all() でメインスレッド以外の Thread の終了を待つところで native_sleep() を無期限で待って native_cond_signal() による通知を待っているのですが、テストでごく稀に通知の受信漏れがあるみたいで終了時にハングしてしまうそうなので、ここを1秒ずつ sleep するように対処療法的に変更しています。

ko1: r60695 2017-11-07 17:01:26 +0900

関数の引数の型は rb_execution_context_t に変更したのに、変数名が th のままのところがあったので ec に変更しています。

ko1: r60696 2017-11-07 17:19:25 +0900

vm_dtrace() の引数の rb_thread_t を rb_execution_context_t に変更。また ruby_th_dtrace_setup() も引数の型を変更してあわせて rb_dtrace_setup() に改名しています。 RUBY_DTRACE_METHOD_HOOK()、RUBY_DTRACE_METHOD_XXX_HOOK() などのマクロの引数も th から ec に変更しています。

ko1: r60697 2017-11-07 17:23:57 +0900

vm_args.c の args_check_block_arg0()、keyword_hash_p()、args_pop_keyword_hash() などの関数の引数には rb_thread_t *th がありましたが、これは最終的に利用されてなかったので削除しています。

nobu: r60698 2017-11-07 20:21:09 +0900

r60661 の tool/runruby.rb の --debugger オプションの対応で、環境変数 RUNRUBY_USE_GDB の指定があった時にデフォルトで run.gdb を利用するのが無効になってたのを修正しています。