hotspot/src/share/vm/runtime/simpleThresholdPolicy.inline.hpp
// Simple methods are as good being compiled with C1 as C2.
// Determine if a given method is such a case.
bool SimpleThresholdPolicy::is_trivial(methodOop method) {
{- -------------------------------------------
(1) 以下のどれかが成り立つ場合は true をリターンする.
そうでなければ false をリターンする.
(ただし, ループ数や基本ブロック数は一度 JIT コンパイル済みでないと分からないので,
既に JIT 生成コードがあり methodDataOop も付いている場合でなければ, 1番目の条件だけで判定)
* 対象のメソッドがアクセサメソッドの場合:
* 対象のメソッドにループがなく, かつ以下のどちらかの条件を満たし,
かつ対象のメソッドが「プロファイリングを取るべきメソッド(would_profile())」と指定されていない場合:
* バイトコード数が 5 未満
* 基本ブロック数が 4 未満, かつバイトコード数が 15 未満
---------------------------------------- -}
if (method->is_accessor()) return true;
if (method->code() != NULL) {
methodDataOop mdo = method->method_data();
if (mdo != NULL && mdo->num_loops() == 0 &&
(method->code_size() < 5 || (mdo->num_blocks() < 4) && (method->code_size() < 15))) {
return !mdo->would_profile();
}
}
return false;
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.