Top


定義場所(file name)

hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp

名前(function name)

void InterpreterMacroAssembler::if_cmp(Condition cc, bool ptr_compare) {

本体部(body)

  {- -------------------------------------------
  (1) (assert)
      ---------------------------------------- -}

      assert_not_delayed();

  {- -------------------------------------------
  (1) (変数宣言など)
      ---------------------------------------- -}

      Label not_taken;

  {- -------------------------------------------
  (1) コード生成:
      「引数 cc で指定された条件が成り立たない場合は, 
       TemplateTable::branch() が生成するコードにより, 分岐を行う.

       逆に条件が成り立つ場合は (not_taken ラベルに飛ぶことで)
       TemplateTable::branch() が生成するコードは実行せず, 
       このままフォールスルー.
      ---------------------------------------- -}

      if (ptr_compare) brx(cc, false, Assembler::pn, not_taken);
      else             br (cc, false, Assembler::pn, not_taken);
      delayed()->nop();

      TemplateTable::branch(false,false);

  {- -------------------------------------------
  (1) (以下は条件が成り立つ場合のパス)
      ---------------------------------------- -}

      bind(not_taken);

  {- -------------------------------------------
  (1) コード生成: (JIT コンパイラ用のプロファイル情報の取得) (See: [here](no2935fdD.html) for details)
      ---------------------------------------- -}

      profile_not_taken_branch(G3_scratch);
    }

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