hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp
// 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.
void InterpreterMacroAssembler::dispatch_epilog(TosState state, int bcp_incr) {
{- -------------------------------------------
(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.