% Branch if int comparison (GE) Succeeds
meth Ificmpge =^ ( ·
var branchoffset : Int ·
var b : Bytecode ·
var o : Object ·
var op1 : Int ·
var op2 : Int ·
var CurrentFrame : FrameInfo ·
TopFrame.GetFrame(CurrentFrame);
% getting the branchoffset value
currentFrame.GetNextBytecode(b);
b.GetCode(branchoffset);
% the first value is popped from the operand stack
currentFrame.Pop(o);
if [] o isExactly DataInfoInt ® (DataInfoInt) o.GetInfo(op2);
[] not (o isExactly DataInfoInt) ® miracle
fi
% the second value is popped from the operand stack
currentFrame.Pop(o);
if [] o isExactly DataInfoInt ® (DataInfoInt) o.GetInfo(op1);
[] not (o isExactly DataInfoInt) ® miracle
fi
If [] op1 >= op2 ®
% modifying the PC register
currentFrame.Branch (branchoffset);
fi
TopFrame.SetFrame(CurrentFrame);
end end end end end end
)
end