hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp
void InterpreterMacroAssembler::dispatch_base(TosState state,
address* table,
bool verifyoop) {
{- -------------------------------------------
(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.