StackWalkCompPolicy クラスの CompilationPolicy オブジェクトの場合, CompilationPolicy::event() が呼ばれると NonTieredCompPolicy::event() が実行される.
JIT コンパイルを行うかどうかの判断は, 上記の関数から呼び出される StackWalkCompPolicy::method_invocation_event() または StackWalkCompPolicy::method_back_branch_event() で行われる.
なおメソッドの JIT コンパイル時には, スタックを遡って処理対象のメソッドの呼び出し元まで調査し, インライン展開する範囲を決めている. この処理は StackWalkCompPolicy::findTopInlinableFrame() で行われる.
ループのコンパイル(OSR)時にはスタックを遡っての調査は行われない (この場合の処理は SimpleCompPolicy とほぼ同じ).
StackWalkCompPolicy::event() (= NonTieredCompPolicy::event())
-> * メソッドのコンパイルの場合:
-> StackWalkCompPolicy::method_invocation_event()
-> StackWalkCompPolicy::findTopInlinableFrame()
-> StackWalkCompPolicy::senderOf()
-> RFrame::caller()
-> RFrame::new_RFrame()
-> CompileBroker::compile_method()
-> (See: here for details)
* ループのコンパイルの場合:
-> StackWalkCompPolicy::method_back_branch_event()
-> CompileBroker::compile_method()
-> (See: here for details)
See: here for details
See: here for details
See: here for details
See: here for details
(#Under Construction) See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.