serp.bytecode
Class Instruction

java.lang.Object
  extended by serp.bytecode.Instruction
All Implemented Interfaces:
BCEntity, VisitAcceptor
Direct Known Subclasses:
FieldInstruction, JumpInstruction, MethodInstruction, MonitorInstruction, TypedInstruction

public class Instruction
extends Object
implements BCEntity, VisitAcceptor

An opcode in a method of a class.

Author:
Abe White

Method Summary
 void acceptVisit(BCVisitor visit)
          Accept a visit from a BCVisitor, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this one.
 boolean equalsInstruction(Instruction other)
          Instructions are equal if their opcodes are the same.
 int getByteIndex()
          Return the index in the method code byte block at which this opcode starts.
 ClassLoader getClassLoader()
          Return the class loader to use when loading related classes.
 Code getCode()
          Return the code block that owns this instruction.
 LineNumber getLineNumber()
          Return the line number of this instruction, or null if none.
 int getLogicalStackChange()
          Return the logical number of stack positions changed by this instruction.
 String getName()
          Return the name of this instruction.
 int getOpcode()
          Return the opcode this instruction represents.
 ConstantPool getPool()
          Return the constant pool of the current class.
 Project getProject()
          Return the project of the current class.
 int getStackChange()
          Return the number of stack positions this instruction pushes or pops during its execution.
 boolean isValid()
          Return false if this entity has been removed from its parent; in this case the results of any operations on the entity are undefined.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getCode

public Code getCode()
Return the code block that owns this instruction.


getName

public String getName()
Return the name of this instruction.


getOpcode

public int getOpcode()
Return the opcode this instruction represents.


getByteIndex

public int getByteIndex()
Return the index in the method code byte block at which this opcode starts. Note that this information may be out of date if the code block has been modified since last read/written.


getLineNumber

public LineNumber getLineNumber()
Return the line number of this instruction, or null if none. This method is subject to the validity constraints of getByteIndex().

See Also:
LineNumberTable.getLineNumber(Instruction)

getLogicalStackChange

public int getLogicalStackChange()
Return the logical number of stack positions changed by this instruction. In other words, ignore weirdness with longs and doubles taking two stack positions.


getStackChange

public int getStackChange()
Return the number of stack positions this instruction pushes or pops during its execution.

Returns:
0 if the stack is not affected by this instruction, a positive number if it pushes onto the stack, and a negative number if it pops from the stack

equalsInstruction

public boolean equalsInstruction(Instruction other)
Instructions are equal if their opcodes are the same. Subclasses should override this method to perform a template comparison: instructions should compare equal to other instructions of the same type where the data is either the same or the data is unset.


getProject

public Project getProject()
Description copied from interface: BCEntity
Return the project of the current class.

Specified by:
getProject in interface BCEntity

getPool

public ConstantPool getPool()
Description copied from interface: BCEntity
Return the constant pool of the current class.

Specified by:
getPool in interface BCEntity

getClassLoader

public ClassLoader getClassLoader()
Description copied from interface: BCEntity
Return the class loader to use when loading related classes.

Specified by:
getClassLoader in interface BCEntity

isValid

public boolean isValid()
Description copied from interface: BCEntity
Return false if this entity has been removed from its parent; in this case the results of any operations on the entity are undefined.

Specified by:
isValid in interface BCEntity

acceptVisit

public void acceptVisit(BCVisitor visit)
Description copied from interface: VisitAcceptor
Accept a visit from a BCVisitor, calling the appropriate methods to notify the visitor that it has entered this entity, and to provide it with the proper callbacks for each sub-entity owned by this one.

Specified by:
acceptVisit in interface VisitAcceptor


Copyright © 2002-2007. All Rights Reserved.