hotspot/src/share/vm/runtime/simpleThresholdPolicy.cpp
// Handle the invocation event.
void SimpleThresholdPolicy::method_invocation_event(methodHandle mh, methodHandle imh,
CompLevel level, TRAPS) {
{- -------------------------------------------
(1) SimpleThresholdPolicy::compile() を呼んで, JIT コンパイル処理を行う.
ただし, 以下の場合はこの処理は行わない.
* JIT コンパイル処理を行ってはいけない状況 (= CompilationPolicy::is_compilation_enabled() が false) の場合
* 同じ JIT コンパイル要求が既に出されていた場合 (= CompileBroker::compilation_is_in_queue() が true)
* SimpleThresholdPolicy が「JIT は現在のレベルのままで十分」と判定した場合 (= SimpleThresholdPolicy::call_event() の返値が引数の level と同じ場合)
---------------------------------------- -}
if (is_compilation_enabled() && !CompileBroker::compilation_is_in_queue(mh, InvocationEntryBci)) {
CompLevel next_level = call_event(mh(), level);
if (next_level != level) {
compile(mh, InvocationEntryBci, next_level, THREAD);
}
}
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.