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 import gov.nasa.jpf.jvm.ElementInfo; 27 28 29 33 public class MONITOREXIT 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 int objref = th.pop(); 39 40 ks.da.get(objref).unlock(th); 41 42 return getNext(th); 43 } 44 45 public boolean isSchedulingRelevant (SystemState ss, KernelState ks, ThreadInfo ti) { 46 int objref = ti.peek(); 47 ElementInfo ei = ks.da.get(objref); 48 49 if (mi.isBodySchedulingRelevant(ti,ei) && (ei.getLockCount() == 1)) { 50 return ti.hasOtherRunnables(); 52 } else { 53 return false; 55 } 56 } 57 58 public int getByteCode () { 59 return 0xC3; 60 } 61 } 62 | Popular Tags |