hotspot/src/cpu/x86/vm/assembler_x86.cpp
void MacroAssembler::call_VM(Register oop_result,
address entry_point,
Register arg_1,
bool check_exceptions) {
{- -------------------------------------------
(1) コード生成:
「一旦 call 命令でリターンアドレスをスタック状に積み, 引数をセットした後、
MacroAssembler::call_VM_helper() が生成するコードで, 指定のエントリポイントの呼び出しを行う」
(一旦リターンアドレスを積んでいるのは, last_Java_pc を取得しやすくするため.
詳細は MacroAssembler::call_VM_helper() 内のコメント参照)
---------------------------------------- -}
Label C, E;
call(C, relocInfo::none);
jmp(E);
bind(C);
pass_arg1(this, arg_1);
call_VM_helper(oop_result, entry_point, 1, check_exceptions);
ret(0);
bind(E);
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.