Top


定義場所(file name)

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

説明(description)

// Dispatch code executed in the epilog of a bytecode which does not do it's
// own dispatch. The dispatch address in IdispatchAddress is used for the
// dispatch.

名前(function name)

void InterpreterMacroAssembler::dispatch_epilog(TosState state, int bcp_incr) {

本体部(body)

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

      assert_not_delayed();

  {- -------------------------------------------
  (1) コード生成: (verify)
      (verify 用のコードを生成する模様だが, sparc 版では何もでない) #TODO
      ---------------------------------------- -}

      verify_FPU(1, state);

  {- -------------------------------------------
  (1) コード生成: (verify)
      ---------------------------------------- -}

      interp_verify_oop(Otos_i, state, __FILE__, __LINE__);

  {- -------------------------------------------
  (1) コード生成:
      「IdispatchAddress が指すアドレスへとジャンプする.」

      (この時点では, InterpreterMacroAssembler::dispatch_prolog() が生成したコードにより, 
      次のバイトコードのテンプレートのアドレスが IdispatchAddress レジスタに格納されている.
      See: InterpreterMacroAssembler::dispatch_prolog())

      (なお, あわせて Lbcp をインクリメントする処理も行っている)
      ---------------------------------------- -}

      jmp( IdispatchAddress, 0 );
      if (bcp_incr != 0)  delayed()->inc(Lbcp, bcp_incr);
      else                delayed()->nop();
    }

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