TechTrader Bytecode Toolkit

com.techtrader.modules.tools.bytecode
Class StackInstruction

java.lang.Object
  |
  +--com.techtrader.modules.tools.bytecode.Instruction
        |
        +--com.techtrader.modules.tools.bytecode.StackInstruction

public class StackInstruction
extends Instruction

Represents an instruction that manipulates the stack of the current frame. Using the setType methods is a hint about the type being manipulated that might cause this Instruction to use the wide version of the opcode it represents (if manipulating a long or double). This saves the developer from having to decide at compile time whether to use pop() or pop2(), etc.

Author:
Abe White

Fields inherited from class com.techtrader.modules.tools.bytecode.Instruction
_byteIndex, _opcode, _opcodeTypes, _owner
 
Constructor Summary
protected StackInstruction(Code owner, int opcode)
           
 
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 object.
 int getStackChange()
          Return the number of stack positions this instruction pushes or pops during its execution.
 StackInstruction setType(Class type)
          Set the type that is being manipulated; this might cause the instruction to change to the wide version of the opcode it represents.
 StackInstruction setTypeName(String name)
          Set the type to manipulate by name.
 
Methods inherited from class com.techtrader.modules.tools.bytecode.Instruction
copy, equals, getByteIndex, getLength, getName, getOpCode, getOwner, invalidate, readData, setByteIndex, setOpCode, writeData
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StackInstruction

protected StackInstruction(Code owner,
                           int opcode)
Method Detail

setType

public StackInstruction setType(Class type)
Set the type that is being manipulated; this might cause the instruction to change to the wide version of the opcode it represents.
Returns:
this Instruction, for method chaining

setTypeName

public StackInstruction setTypeName(String name)
Set the type to manipulate by name.
Returns:
this Instruction, for method chaining
See Also:
setType(java.lang.Class)

getStackChange

public int getStackChange()
Description copied from class: Instruction
Return the number of stack positions this instruction pushes or pops during its execution.
Overrides:
getStackChange in class Instruction
Tags copied from class: Instruction
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

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 object.
Overrides:
acceptVisit in class Instruction

TechTrader Bytecode Toolkit