1 package gov.nasa.jpf.jvm.bytecode; 20 21 import gov.nasa.jpf.jvm.FieldInfo; 22 import gov.nasa.jpf.jvm.ClassInfo; 23 import gov.nasa.jpf.jvm.KernelState; 24 import gov.nasa.jpf.jvm.ThreadInfo; 25 import gov.nasa.jpf.jvm.ElementInfo; 26 import gov.nasa.jpf.jvm.DynamicArea; 27 28 31 public abstract class InstanceFieldInstruction extends FieldInstruction 32 { 33 int lastThis = -1; 34 35 public FieldInfo getFieldInfo () { 36 if (fi == null) { 37 ClassInfo ci = ClassInfo.getClassInfo(className); 38 if (ci != null) { 39 fi = ci.getInstanceField(fname); 40 } 41 } 42 return fi; 43 } 44 45 boolean isSchedulingRelevant (KernelState ks, ThreadInfo ti, int objRef) { 46 if (!ti.hasOtherRunnables() || !ks.da.isSchedulingRelevantObject(objRef)) { 47 return false; 48 } 49 50 if (ti.usePorSyncDetection()) { 51 if (ti.getMethod().isCtor() || isLockProtected(ks.da.get(objRef), ti)) { 52 return false; 53 } 54 } 55 56 return true; 57 } 58 59 60 public int getLastThis() { 61 return lastThis; 62 } 63 64 public ElementInfo getLastElementInfo () { 65 if (lastThis != -1) { 66 return DynamicArea.getHeap().get(lastThis); 67 } 68 69 return null; 70 } 71 } 72 73 | Popular Tags |