hotspot/src/share/vm/runtime/simpleThresholdPolicy.cpp
// Call and loop predicates determine whether a transition to a higher
// compilation level should be performed (pointers to predicate functions
// are passed to common() transition function).
bool SimpleThresholdPolicy::loop_predicate(int i, int b, CompLevel cur_level) {
{- -------------------------------------------
(1) SimpleThresholdPolicy::loop_predicate_helper() を呼び出し, 結果をリターン.
(なお, cur_level 引数の値(= 現在の JIT コンパイルレベル)に応じて,
SimpleThresholdPolicy::loop_predicate_helper() のテンプレート引数の値を変えている.
* cur_level が CompLevel_none もしくは CompLevel_limited_profile の場合:
テンプレート引数は CompLevel_none
* cur_level が CompLevel_full_profile の場合:
テンプレート引数は CompLevel_full_profile
)
(なお, 正確には cur_level 引数の値が
CompLevel_none, CompLevel_limited_profile, CompLevel_full_profile のどれでもない場合には
true をリターンする, という処理パスもある
ただし, 現状では SimpleThresholdPolicy::common() からしか呼び出されておらず,
上記以外の値がくることはない模様)
---------------------------------------- -}
switch(cur_level) {
case CompLevel_none:
case CompLevel_limited_profile: {
return loop_predicate_helper<CompLevel_none>(i, b, 1.0);
}
case CompLevel_full_profile: {
return loop_predicate_helper<CompLevel_full_profile>(i, b, 1.0);
}
default:
return true;
}
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.