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.