Interface BytecodeArray.Visitor

All Known Implementing Classes:
BasicBlocker, BytecodeArray.BaseVisitor, CodeObserver
Enclosing class:
BytecodeArray

public static interface BytecodeArray.Visitor
Instruction visitor interface.
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    Get previous bytecode offset
    void
    setPreviousOffset(int offset)
    Set previous bytecode offset
    void
    visitBranch(int opcode, int offset, int length, int target)
    Visits an instruction which has a branch target argument.
    void
    visitConstant(int opcode, int offset, int length, Constant cst, int value)
    Visits an instruction which has a (possibly synthetic) constant argument, and possibly also an additional literal integer argument.
    void
    visitInvalid(int opcode, int offset, int length)
    Visits an invalid instruction.
    void
    visitLocal(int opcode, int offset, int length, int idx, Type type, int value)
    Visits an instruction which has a local variable index argument.
    void
    visitNewarray(int offset, int length, CstType type, ArrayList<Constant> initVals)
    Visits a newarray instruction.
    void
    visitNoArgs(int opcode, int offset, int length, Type type)
    Visits an instruction which has no inline arguments (implicit or explicit).
    void
    visitSwitch(int opcode, int offset, int length, SwitchList cases, int padding)
    Visits a switch instruction.
  • Method Details

    • visitInvalid

      void visitInvalid(int opcode, int offset, int length)
      Visits an invalid instruction.
      Parameters:
      opcode - the opcode
      offset - offset to the instruction
      length - length of the instruction, in bytes
    • visitNoArgs

      void visitNoArgs(int opcode, int offset, int length, Type type)
      Visits an instruction which has no inline arguments (implicit or explicit).
      Parameters:
      opcode - the opcode
      offset - offset to the instruction
      length - length of the instruction, in bytes
      type - non-null; type the instruction operates on
    • visitLocal

      void visitLocal(int opcode, int offset, int length, int idx, Type type, int value)
      Visits an instruction which has a local variable index argument.
      Parameters:
      opcode - the opcode
      offset - offset to the instruction
      length - length of the instruction, in bytes
      idx - the local variable index
      type - non-null; the type of the accessed value
      value - additional literal integer argument, if salient (i.e., for iinc)
    • visitConstant

      void visitConstant(int opcode, int offset, int length, Constant cst, int value)
      Visits an instruction which has a (possibly synthetic) constant argument, and possibly also an additional literal integer argument. In the case of multianewarray, the argument is the count of dimensions. In the case of invokeinterface, the argument is the parameter count or'ed with the should-be-zero value left-shifted by 8. In the case of entries of type int, the value field always holds the raw value (for convenience of clients).

      Note: In order to avoid giving it a barely-useful visitor all its own, newarray also uses this form, passing value as the array type code and cst as a CstType instance corresponding to the array type.

      Parameters:
      opcode - the opcode
      offset - offset to the instruction
      length - length of the instruction, in bytes
      cst - non-null; the constant
      value - additional literal integer argument, if salient (ignore if not)
    • visitBranch

      void visitBranch(int opcode, int offset, int length, int target)
      Visits an instruction which has a branch target argument.
      Parameters:
      opcode - the opcode
      offset - offset to the instruction
      length - length of the instruction, in bytes
      target - the absolute (not relative) branch target
    • visitSwitch

      void visitSwitch(int opcode, int offset, int length, SwitchList cases, int padding)
      Visits a switch instruction.
      Parameters:
      opcode - the opcode
      offset - offset to the instruction
      length - length of the instruction, in bytes
      cases - non-null; list of (value, target) pairs, plus the default target
      padding - the bytes found in the padding area (if any), packed
    • visitNewarray

      void visitNewarray(int offset, int length, CstType type, ArrayList<Constant> initVals)
      Visits a newarray instruction.
      Parameters:
      offset - offset to the instruction
      length - length of the instruction, in bytes
      type - non-null; the type of the array
      initVals - non-null; list of bytecode offsets for init values
    • setPreviousOffset

      void setPreviousOffset(int offset)
      Set previous bytecode offset
      Parameters:
      offset - offset of the previous fully parsed bytecode
    • getPreviousOffset

      int getPreviousOffset()
      Get previous bytecode offset
      Returns:
      return the recored offset of the previous bytecode