1 package gov.nasa.jpf.jvm.bytecode; 20 21 import gov.nasa.jpf.jvm.ClassInfo; 22 import gov.nasa.jpf.jvm.KernelState; 23 import gov.nasa.jpf.jvm.SystemState; 24 import gov.nasa.jpf.jvm.ThreadInfo; 25 import gov.nasa.jpf.jvm.Types; 26 27 import org.apache.bcel.classfile.ConstantDouble; 28 import org.apache.bcel.classfile.ConstantLong; 29 import org.apache.bcel.classfile.ConstantPool; 30 import org.apache.bcel.generic.ConstantPoolGen; 31 import org.apache.bcel.generic.Type; 32 33 34 38 public class LDC2_W extends Instruction { 39 private long value; 40 41 public void setPeer (org.apache.bcel.generic.Instruction i, ConstantPool cp) { 42 ConstantPoolGen cpg = ClassInfo.getConstantPoolGen(cp); 43 Type type = ((org.apache.bcel.generic.LDC2_W) i).getType(cpg); 44 45 if (type == Type.LONG) { 46 value = ((ConstantLong) cp.getConstant( 47 ((org.apache.bcel.generic.LDC2_W) i).getIndex())).getBytes(); 48 } else { 49 value = Types.doubleToLong( 50 ((ConstantDouble) cp.getConstant( 51 ((org.apache.bcel.generic.LDC2_W) i).getIndex())).getBytes()); 52 } 53 } 54 55 public Instruction execute (SystemState ss, KernelState ks, ThreadInfo th) { 56 th.longPush(value); 57 58 return getNext(th); 59 } 60 61 public int getByteCode () { 62 return 0x14; 63 } 64 } 65 | Popular Tags |