Top


定義場所(file name)

hotspot/src/share/vm/runtime/simpleThresholdPolicy.cpp

説明(description)

// Determine if we should do an OSR compilation of a given method.

名前(function name)

CompLevel SimpleThresholdPolicy::loop_event(methodOop method, CompLevel cur_level) {

本体部(body)

  {- -------------------------------------------
  (1) もし, 現在の JIT コンパイルレベルが CompLevel_none (= インタープリタ実行) なのに
      対象のメソッドに OSR コードが存在すれば, 
      対象のメソッド用の OSR コードの中で, 最も高い JIT コンパイルレベルをリターンする.

      (<= コメントによると, この場合は deopt でインタープリタ実行に落とされた可能性が高い??
      このパスでは SimpleThresholdPolicy::common() を呼んでいないが, 
      他に OSR コードがあることから, 既に (実行回数などの) JIT コンパイルの条件は揃っているので
      呼ぶ必要がないのだと思われる #TODo)
      ---------------------------------------- -}

      if (cur_level == CompLevel_none) {
        // If there is a live OSR method that means that we deopted to the interpreter
        // for the transition.
        CompLevel osr_level = (CompLevel)method->highest_osr_comp_level();
        if (osr_level > CompLevel_none) {
          return osr_level;
        }
      }

  {- -------------------------------------------
  (1) そうでなければ, SimpleThresholdPolicy::common() を呼び出し, その結果をリターンする.
      (predicate には SimpleThresholdPolicy::loop_predicate() を使用)
      ---------------------------------------- -}

      return common(&SimpleThresholdPolicy::loop_predicate, method, cur_level);
    }

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