hotspot/src/cpu/sparc/vm/assembler_sparc.cpp
void MacroAssembler::call_VM(Register oop_result, address entry_point, Register arg_1, Register arg_2, Register arg_3, bool check_exceptions) {
{- -------------------------------------------
(1) コード生成:
「引数をそれぞれ O1, O2, O3 にコピーした後, MacroAssembler::call_VM() が生成するコードを実行するだけ」
(なお, O0 はスレッドを入れるために使用されるので O1 から入れる, とのこと)
---------------------------------------- -}
// O0 is reserved for the thread
mov(arg_1, O1);
mov(arg_2, O2); assert(arg_2 != O1, "smashed argument");
mov(arg_3, O3); assert(arg_3 != O1 && arg_3 != O2, "smashed argument");
call_VM(oop_result, entry_point, 3, check_exceptions);
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.