Top


定義場所(file name)

hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp

名前(function name)

void TemplateTable::wide_ret() {

本体部(body)

  {- -------------------------------------------
  (1) (assert) (See: TemplateTable::transition())
      ---------------------------------------- -}

      transition(vtos, vtos);

  {- -------------------------------------------
  (1) コード生成:
      「リターン先の bci を rbx レジスタにロードする」
      ---------------------------------------- -}

      locals_index_wide(rbx);
      __ movptr(rbx, aaddress(rbx)); // get return bci, compute return bcp

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

      __ profile_ret(rbx, rcx);

  {- -------------------------------------------
  (1) コード生成:
      「Otos_i にロード済みの bci 値を (実行メソッドのバイトコードの先頭アドレスに加えることで) bcp に変換し, 
        結果を r13 レジスタにセットする」
      ---------------------------------------- -}

      __ get_method(rax);
      __ movptr(r13, Address(rax, methodOopDesc::const_offset()));
      __ lea(r13, Address(r13, rbx, Address::times_1, constMethodOopDesc::codes_offset()));

  {- -------------------------------------------
  (1) コード生成:
      「dispatch_next() が生成するコードで, 
        次のバイトコードに対応するテンプレートへとジャンプする」
      ---------------------------------------- -}

      __ dispatch_next(vtos);
    }

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