hotspot/src/cpu/x86/vm/interp_masm_x86_64.cpp
void InterpreterMacroAssembler::dispatch_next(TosState state, int step) {
{- -------------------------------------------
(1) コード生成:
「r13 から次のバイトコードを取得し, r13 をインクリメントする」
---------------------------------------- -}
// load next bytecode (load before advancing r13 to prevent AGI)
load_unsigned_byte(rbx, Address(r13, step));
// advance r13
increment(r13, step);
{- -------------------------------------------
(1) Interpreter::dispatch_table() で TosState に応じた dispatch table を取得し,
それに基づいて以下のようなコードを生成:
「InterpreterMacroAssembler::dispatch_base() が生成するコードにより,
(rbx にロードした次のバイトコード, および取得した dispatch table に基づいて)
適切な次のテンプレートのエントリポイントアドレスを計算して, そこにジャンプする」
---------------------------------------- -}
dispatch_base(state, Interpreter::dispatch_table(state));
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.