hotspot/src/cpu/sparc/vm/interpreterRT_sparc.cpp
IRT_ENTRY(address, InterpreterRuntime::slow_signature_handler(
JavaThread* thread,
methodOopDesc* method,
intptr_t* from,
intptr_t* to ))
{- -------------------------------------------
(1) (変数宣言など)
---------------------------------------- -}
methodHandle m(thread, method);
{- -------------------------------------------
(1) (assert)
---------------------------------------- -}
assert(m->is_native(), "sanity check");
{- -------------------------------------------
(1) この場で新たに生成した SlowSignatureHandler オブジェクトに対して
SignatureIterator::iterate() を呼び出すことにより, 引数を
from の位置(インタープリタのフレーム内)から
to の位置(の native の ABI に対応した位置)へとコピーする.
---------------------------------------- -}
// handle arguments
// Warning: We use reg arg slot 00 temporarily to return the RegArgSignature
// back to the code that pops the arguments into the CPU registers
SlowSignatureHandler(m, (address)from, m->is_static() ? to+2 : to+1, to).iterate(UCONST64(-1));
{- -------------------------------------------
(1) Interpreter::result_handler() を呼んで返値の型に合った result handler を取得し,
それをリターン.
---------------------------------------- -}
// return result handler
return Interpreter::result_handler(m->result_type());
IRT_END
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.