1 package gov.nasa.jpf.jvm.bytecode; 20 21 import gov.nasa.jpf.jvm.KernelState; 22 import gov.nasa.jpf.jvm.SystemState; 23 import gov.nasa.jpf.jvm.ThreadInfo; 24 import gov.nasa.jpf.jvm.Types; 25 26 import org.apache.bcel.classfile.ConstantPool; 27 28 29 33 public class DDIV extends Instruction { 34 public void setPeer (org.apache.bcel.generic.Instruction i, ConstantPool cp) { 35 } 36 37 public Instruction execute (SystemState ss, KernelState ks, ThreadInfo th) { 38 double v1 = Types.longToDouble(th.longPop()); 39 double v2 = Types.longToDouble(th.longPop()); 40 41 double r = v2 / v1; 42 43 if (!th.getVM().checkNaN(r)) { 44 return th.createAndThrowException("java.lang.ArithmeticException", 45 "inexact result: " + v2 + "/" + v1 + "=" + r); 46 } 47 48 th.longPush(Types.doubleToLong(r)); 49 50 return getNext(th); 51 } 52 53 public int getByteCode () { 54 return 0x6F; 55 } 56 } 57 | Popular Tags |