JavaVM Bytecode Instruction Manualのうそつき!

if

Operation
Branch if int comparison with zero succeeds
(略)
Description
The value must be of type int. It is popped from the operand stack and compared against zero. All comparisons are signed. The results of the comparisons are as follows:
(略)

intじゃなくても受け付けるじゃん! というか、booleanとかshortとかbyteとかもスタックトップから見るでは。
こんなバイトコードがあってひっくり返った。「Z」(booleanを示すシグネチャ。bはbyteに取られてるので。local,stack共に実装はbyte互換です。つまりJavaは7bitほど無駄遣いしてるわけですね。ま、生のC言語の「int互換」よりはいいかな)ってあーた。

getfield(anObjectEngine,"title/Activity","m_DataLoad","Z");
ifeq(anObjectEngine,func8_127);

さすがにfloatやdoubleでは見ないよなぁ。