Interface IInstruction

All Known Subinterfaces:
IArrayLoadInstruction, IArrayStoreInstruction, IBinaryOpInstruction, IComparisonInstruction, IConditionalBranchInstruction, IConversionInstruction, IGetInstruction, IInstanceofInstruction, IInvokeInstruction, ILoadIndirectInstruction, ILoadInstruction, IPutInstruction, IShiftInstruction, IStoreIndirectInstruction, IStoreInstruction, ITypeTestInstruction, IUnaryOpInstruction
All Known Implementing Classes:
ArrayLengthInstruction, ArrayLoadInstruction, ArrayStoreInstruction, BinaryOpInstruction, CheckCastInstruction, ComparisonInstruction, ConditionalBranchInstruction, ConstantInstruction, ConversionInstruction, DupInstruction, GetInstruction, GotoInstruction, InstanceofInstruction, Instruction, InvokeDynamicInstruction, InvokeInstruction, LoadInstruction, MonitorInstruction, NewInstruction, PopInstruction, PutInstruction, ReturnInstruction, ShiftInstruction, StoreInstruction, SwapInstruction, SwitchInstruction, ThrowInstruction, UnaryOpInstruction

public interface IInstruction
Author:
sfink

Basic functionality we expect of any instruction implementation

  • Method Details

    • isFallThrough

      boolean isFallThrough()
      Returns:
      true if the instruction can "fall through" to the following instruction
    • getBranchTargets

      int[] getBranchTargets()
      Returns:
      an array containing the labels this instruction can branch to (not including the following instruction if this instruction 'falls through')
    • redirectTargets

      IInstruction redirectTargets(int[] targetMap)
      Returns:
      an Instruction equivalent to this one but with any branch labels updated by looking them up in the targetMap array
    • getPoppedCount

      int getPoppedCount()
      Returns:
      the number of values this instruction pops off the working stack
    • getPushedType

      String getPushedType(String[] poppedTypesToCheck)
      Computes the type of data pushed onto the stack, or null if none is pushed.
      Parameters:
      poppedTypesToCheck - the types of the data popped off the stack by this instruction; if poppedTypes is null, then we don't know the incoming stack types and the result of this method may be less accurate
    • getPushedWordSize

      byte getPushedWordSize()
      Returns:
      the JVM word size of the value this instruction pushes onto the stack, or 0 if this instruction doesn't push anything onto the stack.
    • visit

      void visit(IInstruction.Visitor v)
      Apply a Visitor to this instruction. We invoke the appropriate Visitor method according to the type of this instruction.
    • toString

      String toString()
      Subclasses must implement toString.
      Overrides:
      toString in class Object
    • isPEI

      boolean isPEI()
      PEI == "Potentially excepting instruction"
      Returns:
      true iff this instruction might throw an exception