001package serp.bytecode;
002
003import java.io.*;
004
005import serp.bytecode.visitor.*;
006
007/**
008 * The <code>ret</code> instruction is used in the implementation of finally.
009 *
010 * @author Abe White
011 */
012public 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}