hotspot/src/cpu/sparc/vm/templateInterpreter_sparc.cpp
address TemplateInterpreterGenerator::generate_ArrayIndexOutOfBounds_handler(const char* name) {
{- -------------------------------------------
(1) (ここからが生成するコードの始まり)
---------------------------------------- -}
address entry = __ pc();
{- -------------------------------------------
(1) コード生成:
「オペランドスタック("expression stack")を空にする.」
---------------------------------------- -}
// expression stack must be empty before entering the VM if an exception happened
__ empty_expression_stack();
{- -------------------------------------------
(1) コード生成:
「InterpreterRuntime::throw_ArrayIndexOutOfBoundsException() を呼び出す.」
---------------------------------------- -}
// convention: expect aberrant index in register G3_scratch, then shuffle the
// index to G4_scratch for the VM call
__ mov(G3_scratch, G4_scratch);
__ set((intptr_t)name, G3_scratch);
__ call_VM(Oexception, CAST_FROM_FN_PTR(address, InterpreterRuntime::throw_ArrayIndexOutOfBoundsException), G3_scratch, G4_scratch);
{- -------------------------------------------
(1) コード生成:
「(例外送出なので, ここには決して戻ってこない)」
---------------------------------------- -}
__ should_not_reach_here();
{- -------------------------------------------
(1) 以上で生成したコードの先頭アドレスをリターン.
---------------------------------------- -}
return entry;
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.