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.