bcel API: Class Instruction
org.apache.bcel.generic
Class Instruction
java.lang.Object
|
+--org.apache.bcel.generic.Instruction
All Implemented Interfaces: java.lang.Cloneable, java.io.Serializable
Direct Known Subclasses: ACONST_NULL , ArithmeticInstruction , ArrayInstruction , ARRAYLENGTH , ATHROW , BIPUSH , BranchInstruction , BREAKPOINT , ConversionInstruction , CPInstruction , DCMPG , DCMPL , DCONST , FCMPG , FCMPL , FCONST , ICONST , IMPDEP1 , IMPDEP2 , LCMP , LCONST , LocalVariableInstruction , MONITORENTER , MONITOREXIT , NEWARRAY , NOP , RET , ReturnInstruction , SIPUSH , StackInstruction
public abstract class Instruction extends java.lang.Objectimplements java.lang.Cloneable, java.io.Serializable
Abstract super class for all Java byte codes.
Version: $Id: Instruction.java,v 1.1.1.1 2001/10/29 20:00:18 jvanzyl Exp $
Author: M. Dahm
See Also: Serialized Form
Constructor Summary
Instruction (short opcode,
short length)
Method Summary
abstract void
accept (Visitor v)
Call corresponding visitor method(s).
int
consumeStack (ConstantPoolGen cpg)
This method also gives right results for instructions whose
effect on the stack depends on the constant pool entry they
reference.
Instruction
copy ()
Use with caution, since `BranchInstruction's have a `target' reference which
is not copied correctly (only basic types are).
void
dump (java.io.DataOutputStream out)
Dump instruction as byte code to stream out.
int
getLength ()
short
getOpcode ()
protected void
initFromFile (ByteSequence bytes,
boolean wide)
Read needed data (e.g.
int
produceStack (ConstantPoolGen cpg)
This method also gives right results for instructions whose
effect on the stack depends on the constant pool entry they
reference.
static Instruction
readInstruction (ByteSequence bytes)
Read an instruction from (byte code) input stream and return the
appropiate object.
java.lang.String
toString ()
java.lang.String
toString (boolean verbose)
Long output format:
<name of opcode> "["<opcode number>"]"
"("<length of instruction>")"
java.lang.String
toString (ConstantPool cp)
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
length
protected short length
opcode
protected short opcode
Instruction
public Instruction (short opcode,
short length)
dump
public void dump (java.io.DataOutputStream out)
throws java.io.IOException
Dump instruction as byte code to stream out.
Parameters: out
- Output stream
toString
public java.lang.String toString (boolean verbose)
Long output format:
<name of opcode> "["<opcode number>"]"
"("<length of instruction>")"
Parameters: verbose
- long/short format switchReturns: mnemonic for instruction
toString
public java.lang.String toString ()
Overrides: toString
in class java.lang.Object
Returns: mnemonic for instruction in verbose format
toString
public java.lang.String toString (ConstantPool cp)
Returns: mnemonic for instruction with sumbolic references resolved
copy
public Instruction copy ()
Use with caution, since `BranchInstruction's have a `target' reference which
is not copied correctly (only basic types are). This also applies for
`Select' instructions with their multiple branch targets.
Returns: (shallow) copy of an instruction See Also: BranchInstruction
initFromFile
protected void initFromFile (ByteSequence bytes,
boolean wide)
throws java.io.IOException
Read needed data (e.g. index) from file.
Parameters: bytes
- byte sequence to read fromwide
- "wide" instruction flag
readInstruction
public static final Instruction readInstruction (ByteSequence bytes)
throws java.io.IOException
Read an instruction from (byte code) input stream and return the
appropiate object.
Parameters: file
- file to read fromReturns: instruction object being read
consumeStack
public int consumeStack (ConstantPoolGen cpg)
This method also gives right results for instructions whose
effect on the stack depends on the constant pool entry they
reference.
Returns: Number of words consumed from stack by this instruction,
or Constants.UNPREDICTABLE, if this can not be computed statically
produceStack
public int produceStack (ConstantPoolGen cpg)
This method also gives right results for instructions whose
effect on the stack depends on the constant pool entry they
reference.
Returns: Number of words produced onto stack by this instruction,
or Constants.UNPREDICTABLE, if this can not be computed statically
getOpcode
public short getOpcode ()
Returns: this instructions opcode
getLength
public int getLength ()
Returns: length (in bytes) of instruction
accept
public abstract void accept (Visitor v)
Call corresponding visitor method(s). The order is:
Call visitor methods of implemented interfaces first, then
call methods according to the class hierarchy in descending order,
i.e., the most specific visitXXX() call comes last.
Parameters: v
- Visitor object