Top


定義場所(file name)

hotspot/src/share/vm/runtime/simpleThresholdPolicy.inline.hpp

名前(function name)

template<CompLevel level>
bool SimpleThresholdPolicy::call_predicate_helper(int i, int b, double scale) {

本体部(body)

  {- -------------------------------------------
  (1) 現在の InvocationCounter の値(i引数, b引数), 及び現在の JIT コンパイルレベル(level テンプレート引数) に基づき
      以下の値をリターン.
      (なお, scale 引数は比較対象の閾値を調整するためのもの. 比較時に閾値が scale 倍される)

      * level が CompLevel_none もしくは CompLevel_limited_profile の場合:
        以下のどちらかが成り立てば true をリターン. そうでなければ false をリターン.

        * メソッドが呼び出された回数(i)が Tier3InvocationThreshold*scale を超えている
        * メソッドが呼び出された回数(i)が Tier3MinInvocationThreshold*scale を超えており, かつ
          メソッドが呼び出された回数(i)と backward branch の実行回数(b)の合計が Tier3CompileThreshold*scale を超えている

      * level が CompLevel_full_profile の場合:
        以下のどちらかが成り立てば true をリターン. そうでなければ false をリターン.

        * メソッドが呼び出された回数(i)が Tier4InvocationThreshold*scale を超えている
        * メソッドが呼び出された回数(i)が Tier4MinInvocationThreshold*scale を超えており, かつ
          メソッドが呼び出された回数(i)と backward branch の実行回数(b)の合計が Tier4CompileThreshold*scale を超えている
      ---------------------------------------- -}

      switch(level) {
      case CompLevel_none:
      case CompLevel_limited_profile:
        return (i > Tier3InvocationThreshold * scale) ||
               (i > Tier3MinInvocationThreshold * scale && i + b > Tier3CompileThreshold * scale);
      case CompLevel_full_profile:
       return (i > Tier4InvocationThreshold * scale) ||
              (i > Tier4MinInvocationThreshold * scale && i + b > Tier4CompileThreshold * scale);
      }
      return true;
    }

This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.