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 DCMPG 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 if (!th.getVM().checkNaNcompare(v1,v2)){ 42 return th.createAndThrowException("java.lang.ArithmeticException", 43 "comparing in-exact values: " + v2 + "<" + v1); 44 } 45 46 if (Double.isNaN(v1) || Double.isNaN(v2)) { 47 th.push(1, false); 48 } else if (v1 == v2) { 49 th.push(0, false); 50 } else if (v2 > v1) { 51 th.push(1, false); 52 } else { 53 th.push(-1, false); 54 } 55 56 return getNext(th); 57 } 58 59 60 public int getByteCode () { 61 return 0x98; 62 } 63 } 64 | Popular Tags |