hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp
void InterpreterMacroAssembler::call_VM_base(
Register oop_result,
Register java_thread,
Register last_java_sp,
address entry_point,
int number_of_arguments,
bool check_exception
) {
{- -------------------------------------------
(1) (引数でカレントスレッドの JavaThread オブジェクトを指したレジスタ(java_thread)が指定されていなければ,
代わりに L7_thread_cache を使うことにする.)
(といっても, 指定されていることがないような気もするが... #TODO)
---------------------------------------- -}
if (!java_thread->is_valid())
java_thread = L7_thread_cache;
{- -------------------------------------------
(1) コード生成:
「MacroAssembler::call_VM_base() が生成するコードで呼び出しを行うだけ」
(sparc では特に退避復帰の必要性はない?? 退避復帰コードがコメントアウトされている)
---------------------------------------- -}
// See class ThreadInVMfromInterpreter, which assumes that the interpreter
// takes responsibility for setting its own thread-state on call-out.
// However, ThreadInVMfromInterpreter resets the state to "in_Java".
//save_bcp(); // save bcp
MacroAssembler::call_VM_base(oop_result, java_thread, last_java_sp, entry_point, number_of_arguments, check_exception);
//restore_bcp(); // restore bcp
//restore_locals(); // restore locals pointer
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.