% 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