ruby-trunk-changes r60457 - r60479

今日は主に昨日の rb_thread_t から rb_execution_context_t をポインタ参照に変更する構造の変更に追随して、たくさんの関数の引数で受け取る型の変更などがありました。

usa: r60457 2017-10-27 02:14:16 +0900

make test-bundled-gems-prepare のコマンドラインで ">" を含む文字列をシングルクオートでくくってましたが r60436 と同様に Windows ではシングルクオートではメタキャラクタが解釈されるみたいなので、ダブルクオートに変更しています。

usa: r60458 2017-10-27 02:16:30 +0900

.gitignore に .bundle を追加しています。

hsbt: r60459 2017-10-27 08:02:18 +0900

.gitignore から spec/rspec を削除しています。

ko1: r60460 2017-10-27 08:33:59 +0900

rb_vm_bh_to_procval() の引数の rb_thread_t を rb_execution_context_t の部分しか使わないので引数を置き換えています。で呼び元でも GET_THREAD() を GET_EC() に変更したりしています。

mame: r60461 2017-10-27 09:25:57 +0900

r60460 でうっかり削除されてた rb_vm_bh_to_procval() の prototype 宣言を復活させています。

ko1: r60462 2017-10-27 09:31:59 +0900

rb_vm_bh_to_procval() の宣言は proc.c から vm_core.h に移動しています。

ko1: r60463 2017-10-27 09:46:11 +0900

vm_get_ruby_level_caller_cfp() の引数も rb_thread_t から rb_execution_context_t の部分だけ受け取るように変更しています。これ以降同様の変更が続きます。

ko1: r60464 2017-10-27 10:13:35 +0900

rb_threadptr_stack_overflow() を rb_ec_stack_overflow() と改名し、引数も rb_thread_t から rb_execution_context_t を受け取るように変更しています。

ko1: r60465 2017-10-27 10:22:01 +0900

vm_getspecial(), lep_svar(), lep_svar_write(), lep_svar_get(), lep_svar_set() などの関数も引数の rb_thread_t を rb_execution_context_t に変更しています。

ko1: r60466 2017-10-27 10:31:15 +0900

vm_cref_push() も引数の rb_thread_t を rb_execution_context_t に変更しています。また先に変更した関数の引数に const 修飾子を追加しています。

ko1: r60467 2017-10-27 10:35:12 +0900

vm_throw() および vm_throw_continue(), vm_throw_start() も引数の rb_thread_t を rb_execution_context_t に変更しています。

ko1: r60468 2017-10-27 11:49:30 +0900

vm_call_xxx() の関数群(および生成ツールの tool/mk_call_iseq_optimized.rb)も引数の rb_thread_t を rb_execution_context_t に変更しています。

a_matsuda: r60469 2017-10-27 12:55:09 +0900

spec/ruby の spec のメッセージ(spec の名前)の typo 修正。 https://github.com/ruby/ruby/pull/1729

ko1: r60470 2017-10-27 14:18:58 +0900

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

ko1: r60471 2017-10-27 14:22:24 +0900

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

ko1: r60472 2017-10-27 14:27:25 +0900

vm_block_handler_to_proc() という関数は削除してかわりに rb_vm_bh_to_procval() を利用するようにリファクタリングしています。

ko1: r60473 2017-10-27 14:30:05 +0900

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

ko1: r60474 2017-10-27 14:33:33 +0900

vm_stack_consistency_error() および関数マクロ VM_SP_CNT() も引数の rb_thread_t を rb_execution_context_t を受け取るように変更しています。

ko1: r60475 2017-10-27 15:01:21 +0900

r60464 で rb_ec_stack_overflow() の引数変更した時に誤って ruby_stack_overflowed_p() の呼び出し時も rb_thread_t * のところに rb_execution_context_t のポインタを渡してしまっていたのを修正しています。

ko1: r60476 2017-10-27 15:06:31 +0900

invoke_block() や invoke_bmethod(), vm_yield(), vm_invoke_iseq_block() などなどブロック起動関係の関数(めっちゃある…)の引数も rb_thread_t のかわりに rb_execution_context_t を受け取るように変更しています。

ko1: r60477 2017-10-27 15:21:50 +0900

vm_caller_setup_arg_block() と VM の実行のメインループである vm_exec_core() も(従って各 VM 命令の実行部分も) rb_thread_t ではなく rb_execution_context_t を受け取るように変更しています。rb_thread_t が必要なところは逆に rb_ec_thread_ptr() で ec から辿るようにしています。

naruse: r60478 2017-10-27 17:40:40 +0900

r60344 の Dir.glob での {a,b,c} のような記法の展開を高速化する変更を revert しています。この最適化で展開結果の順序が変化するようになってたのですが、これがテストの失敗に繋がったそうで、順序を維持するようにしようとしてるみたいです。 [ruby-core:82660] [Feature #13873]

nobu: r60479 2017-10-27 21:00:38 +0900

compile.c iseq.c の関数の引数や変数の NODE型のポインタに const 修飾子をあちこち追加しています。