Top


定義場所(file name)

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

名前(function name)

void InterpreterMacroAssembler::dispatch_base(TosState state,
                                              address* table,
                                              bool verifyoop) {

本体部(body)

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

      verify_FPU(1, state);
      if (VerifyActivationFrameSize) {
        Label L;
        mov(rcx, rbp);
        subptr(rcx, rsp);
        int32_t min_frame_size =
          (frame::link_offset - frame::interpreter_frame_initial_sp_offset) *
          wordSize;
        cmpptr(rcx, (int32_t)min_frame_size);
        jcc(Assembler::greaterEqual, L);
        stop("broken stack frame");
        bind(L);
      }
      if (verifyoop) {
        verify_oop(rax, state);
      }

  {- -------------------------------------------
  (1) コード生成:
      「適切な次のテンプレートのエントリポイントアドレスを計算して, 
       そこにジャンプするコードを生成.」
      ---------------------------------------- -}

      lea(rscratch1, ExternalAddress((address)table));
      jmp(Address(rscratch1, rbx, Address::times_8));
    }

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