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 25 import org.apache.bcel.classfile.ConstantPool; 26 27 28 32 public class INSTANCEOF extends Instruction { 33 private String type; 34 35 public void setPeer (org.apache.bcel.generic.Instruction i, ConstantPool cp) { 36 type = cp.constantToString(cp.getConstant( 37 ((org.apache.bcel.generic.INSTANCEOF) i).getIndex())) 38 .replace('.', '/'); 39 40 if (!type.startsWith("[")) { 41 type = "L" + type + ";"; 42 } 43 } 44 45 public Instruction execute (SystemState ss, KernelState ks, ThreadInfo th) { 46 int objref = th.pop(); 47 48 if (objref == -1) { 49 th.push(0, false); 50 } else if (ks.da.get(objref).instanceOf(type)) { 51 th.push(1, false); 52 } else { 53 th.push(0, false); 54 } 55 56 return getNext(th); 57 } 58 59 public int getByteCode () { 60 return 0xC1; 61 } 62 } 63 | Popular Tags |