hotspot/src/cpu/sparc/vm/interp_masm_sparc.cpp
void InterpreterMacroAssembler::if_cmp(Condition cc, bool ptr_compare) {
{- -------------------------------------------
(1) (assert)
---------------------------------------- -}
assert_not_delayed();
{- -------------------------------------------
(1) (変数宣言など)
---------------------------------------- -}
Label not_taken;
{- -------------------------------------------
(1) コード生成:
「引数 cc で指定された条件が成り立たない場合は,
TemplateTable::branch() が生成するコードにより, 分岐を行う.
逆に条件が成り立つ場合は (not_taken ラベルに飛ぶことで)
TemplateTable::branch() が生成するコードは実行せず,
このままフォールスルー.
---------------------------------------- -}
if (ptr_compare) brx(cc, false, Assembler::pn, not_taken);
else br (cc, false, Assembler::pn, not_taken);
delayed()->nop();
TemplateTable::branch(false,false);
{- -------------------------------------------
(1) (以下は条件が成り立つ場合のパス)
---------------------------------------- -}
bind(not_taken);
{- -------------------------------------------
(1) コード生成: (JIT コンパイラ用のプロファイル情報の取得) (See: [here](no2935fdD.html) for details)
---------------------------------------- -}
profile_not_taken_branch(G3_scratch);
}
This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.