00001 package gov.nasa.arc.ase.jpf.jvm.bytecode; 00002 00003 import de.fub.bytecode.classfile.ConstantPool; 00004 import de.fub.bytecode.generic.ConstantPoolGen; 00005 import gov.nasa.arc.ase.jpf.jvm.SystemState; 00006 import gov.nasa.arc.ase.jpf.jvm.KernelState; 00007 import gov.nasa.arc.ase.jpf.jvm.ThreadInfo; 00008 import gov.nasa.arc.ase.jpf.jvm.ClassInfo; 00009 import gov.nasa.arc.ase.util.Debug; 00010 00011 public class INVOKESTATIC extends InvokeInstruction { 00012 public boolean examine(SystemState ss, KernelState ks, ThreadInfo th) { 00013 return !ClassInfo.getClassInfo(cname).isStaticMethodDeterministic(th, mname); 00014 } 00015 public Instruction execute(SystemState ss, KernelState ks, ThreadInfo th) { 00016 return ClassInfo.getClassInfo(cname).executeStaticMethod(th, mname); 00017 } 00018 public boolean isExecutable(SystemState ss, KernelState ks, ThreadInfo th) { 00019 return ClassInfo.getClassInfo(cname).isStaticMethodExecutable(th, mname); 00020 } 00021 public void setPeer(de.fub.bytecode.generic.Instruction i, ConstantPool cp) { 00022 cname = ((de.fub.bytecode.generic.INVOKESTATIC)i).getClassName(new ConstantPoolGen(cp)); 00023 signature = ((de.fub.bytecode.generic.INVOKESTATIC)i).getSignature(new ConstantPoolGen(cp)); 00024 mname = ((de.fub.bytecode.generic.INVOKESTATIC)i).getMethodName(new ConstantPoolGen(cp)) + 00025 signature; 00026 } 00027 }