001    package serp.bytecode;
002    
003    import java.io.*;
004    
005    import serp.bytecode.visitor.*;
006    
007    /**
008     * The <code>ret</code> instruction is used in the implementation of finally.
009     *
010     * @author Abe White
011     */
012    public class RetInstruction extends LocalVariableInstruction {
013        RetInstruction(Code owner) {
014            super(owner, Constants.RET);
015        }
016    
017        int getLength() {
018            return super.getLength() + 1;
019        }
020    
021        public boolean equalsInstruction(Instruction other) {
022            if (this == other)
023                return true;
024            if (!(other instanceof RetInstruction))
025                return false;
026            return super.equalsInstruction(other);
027        }
028    
029        public void acceptVisit(BCVisitor visit) {
030            visit.enterRetInstruction(this);
031            visit.exitRetInstruction(this);
032        }
033    
034        void read(DataInput in) throws IOException {
035            super.read(in);
036            setLocal(in.readUnsignedByte());
037        }
038    
039        void write(DataOutput out) throws IOException {
040            super.write(out);
041            out.writeByte(getLocal());
042        }
043    }