コンパイル処理の流れ・まとめ
とりあえず流れはこんなところでした。まとめときます。
- th_compile_from_node→yarv_iseq_new→yarv_iseq_new_with_opt
- YARVCore::InstructionSequenceオブジェクト作成
- prepare_iseq_build
- iseq_compile
- [compile step 1 (traverse each node)]
- COMPILE
- iseq_setup
- [compile step 3.1 (iseq_optimize)]
- [compile step 3.2 (iseq_insns_unification)]
- [compile step 3.3 (set_sequence_stackcaching)]
- [compile step 4.1 (set_sequence)]
- [compile step 4.2 (set_exception_table)]
- [compile step 4.3 (set_optargs_table)]
- [compile step 5 (iseq_translate_direct_threaded_code)]
- [compile step: finish]
- [compile step 1 (traverse each node)]
- cleanup_iseq_build