Top


定義場所(file name)

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

説明(description)

// Simple methods are as good being compiled with C1 as C2.
// Determine if a given method is such a case.

名前(function name)

bool SimpleThresholdPolicy::is_trivial(methodOop method) {

本体部(body)

  {- -------------------------------------------
  (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.