00001 package gov.nasa.arc.ase.jpf.jvm.bytecode; 00002 00003 import de.fub.bytecode.classfile.ConstantPool; 00004 import gov.nasa.arc.ase.jpf.jvm.SystemState; 00005 import gov.nasa.arc.ase.jpf.jvm.KernelState; 00006 import gov.nasa.arc.ase.jpf.jvm.ThreadInfo; 00007 import gov.nasa.arc.ase.jpf.jvm.MethodInfo; 00008 import gov.nasa.arc.ase.util.Debug; 00009 00010 public class IRETURN extends ReturnInstruction { 00011 public Instruction execute(SystemState ss, KernelState ks, ThreadInfo th) { 00012 MethodInfo mi = th.getMethod(); 00013 00014 mi.leave(th); 00015 00016 // pops the return value from the stack 00017 int value = th.pop(); 00018 00019 // removes the stack frame 00020 th.popFrame(); 00021 th.removeArguments(mi); 00022 00023 // push the return value on the caller stack 00024 th.push(value, false); 00025 00026 return th.getPC().getNext(); 00027 } 00028 public void setPeer(de.fub.bytecode.generic.Instruction i, ConstantPool cp) { 00029 } 00030 }