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.Object
- implements 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 switch- Returns:
- 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 from- Returns:
- 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