insns.def周りの理解を整理するために書いた雑文を置いておく。ソースのバージョンは2.4.1 YARVの命令ディスパッチを行う関数: vm_exec_core vm_exec.c に vm_exec_core なる関数がある。perf recordでRubyのスクリプトを実行してperf reportするとかなり大部分をvm_exec_coreが消費していることが多い。 これはRubyのコードがYARV iseqにコンパイルされた後、この関数がYARV iseqのインタプリタ的に働くことでCRubyが動作しているため。 OPT_CALL_THREADED_CODE = 0 しかしvm_exec_coreなる定義はOPT_CALL_THREADED_CODEのifdefで分岐した上でvm_exec.cに2つある。 vm_opts.h というVMの最適化オプションが定義されたヘッダーファ