SimpleThresholdPolicy クラスの CompilationPolicy オブジェクトの場合, CompilationPolicy::event() が呼ばれると SimpleThresholdPolicy::event() が実行される.
JIT コンパイルを行うかどうかの判断は, 上記の関数から呼び出される SimpleThresholdPolicy::method_invocation_event() または SimpleThresholdPolicy::method_back_branch_event() で行われる.
また, Tiered Compilation では複数の JIT コンパイルレベルが存在するが, 次のレベルに移るかどうかの判断は SimpleThresholdPolicy::call_event(メソッド全体のコンパイル用) 及び SimpleThresholdPolicy::loop_event(ループのコンパイル用) 内で行われている.
SimpleThresholdPolicy::event() -> * メソッドのコンパイルの場合: -> SimpleThresholdPolicy::method_invocation_event() -> SimpleThresholdPolicy::call_event() -> SimpleThresholdPolicy::common() (なお使用するpredicateは SimpleThresholdPolicy::call_predicate()) -> SimpleThresholdPolicy::is_trivial() -> SimpleThresholdPolicy::call_predicate() -> SimpleThresholdPolicy::call_predicate_helper() -> SimpleThresholdPolicy::compile() -> SimpleThresholdPolicy::submit_compile() -> CompileBroker::compile_method() -> (See: here for details) * ループのコンパイルの場合: -> SimpleThresholdPolicy::method_back_branch_event() -> SimpleThresholdPolicy::call_event() -> (同上) -> SimpleThresholdPolicy::loop_event() -> SimpleThresholdPolicy::common() (なお使用するpredicateは SimpleThresholdPolicy::loop_predicate()) -> SimpleThresholdPolicy::loop_predicate() -> SimpleThresholdPolicy::loop_predicate_helper() -> SimpleThresholdPolicy::compile() -> (同上)
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
See: here for details
(#Under Construction) See: here for details
See: here for details
See: here for details
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.