hotspot/src/cpu/x86/vm/templateTable_x86_64.cpp
void TemplateTable::ret() {
{- -------------------------------------------
(1) (assert) (See: TemplateTable::transition())
---------------------------------------- -}
transition(vtos, vtos);
{- -------------------------------------------
(1) コード生成:
「リターン先の bci を rbx レジスタにロードする」
---------------------------------------- -}
locals_index(rbx);
__ movslq(rbx, iaddress(rbx)); // get return bci, compute return bcp
{- -------------------------------------------
(1) コード生成: (JIT コンパイラ用のプロファイル情報の取得) (See: [here](no2935fdD.html) for details)
---------------------------------------- -}
__ profile_ret(rbx, rcx);
{- -------------------------------------------
(1) コード生成:
「Otos_i にロード済みの bci 値を (実行メソッドのバイトコードの先頭アドレスに加えることで) bcp に変換し,
結果を r13 レジスタにセットする」
---------------------------------------- -}
__ get_method(rax);
__ movptr(r13, Address(rax, methodOopDesc::const_offset()));
__ lea(r13, Address(r13, rbx, Address::times_1,
constMethodOopDesc::codes_offset()));
{- -------------------------------------------
(1) コード生成:
「dispatch_next() が生成するコードで,
次のバイトコードに対応するテンプレートへとジャンプする」
---------------------------------------- -}
__ dispatch_next(vtos);
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.