ひとり勉強会

ひとり楽しく勉強会

コンパイル処理の流れ・まとめ

とりあえず流れはこんなところでした。まとめときます。

  • 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]
    • cleanup_iseq_build