Class FrameNode


public class FrameNode extends AbstractInsnNode
A node that represents a stack map frame. These nodes are pseudo instruction nodes in order to be inserted in an instruction list. In fact these nodes must(*) be inserted just before any instruction node i that follows an unconditionnal branch instruction such as GOTO or THROW, that is the target of a jump instruction, or that starts an exception handler block. The stack map frame types must describe the values of the local variables and of the operand stack elements just before i is executed.

(*) this is mandatory only for classes whose version is greater than or equal to Opcodes.V1_6.
  • Field Details

    • type

      public int type
      The type of this frame. Must be Opcodes.F_NEW for expanded frames, or Opcodes.F_FULL, Opcodes.F_APPEND, Opcodes.F_CHOP, Opcodes.F_SAME or Opcodes.F_APPEND, Opcodes.F_SAME1 for compressed frames.
    • local

      public List<Object> local
      The types of the local variables of this stack map frame. Elements of this list can be Integer, String or LabelNode objects (for primitive, reference and uninitialized types respectively - see MethodVisitor).
    • stack

      public List<Object> stack
      The types of the operand stack elements of this stack map frame. Elements of this list can be Integer, String or LabelNode objects (for primitive, reference and uninitialized types respectively - see MethodVisitor).
  • Constructor Details

    • FrameNode

      public FrameNode(int type, int numLocal, Object[] local, int numStack, Object[] stack)
      Constructs a new FrameNode.
      Parameters:
      type - the type of this frame. Must be Opcodes.F_NEW for expanded frames, or Opcodes.F_FULL, Opcodes.F_APPEND, Opcodes.F_CHOP, Opcodes.F_SAME or Opcodes.F_APPEND, Opcodes.F_SAME1 for compressed frames.
      numLocal - number of local variables of this stack map frame. Long and double values count for one variable.
      local - the types of the local variables of this stack map frame. Elements of this list can be Integer, String or LabelNode objects (for primitive, reference and uninitialized types respectively - see MethodVisitor). Long and double values are represented by a single element.
      numStack - number of operand stack elements of this stack map frame. Long and double values count for one stack element.
      stack - the types of the operand stack elements of this stack map frame. Elements of this list can be Integer, String or LabelNode objects (for primitive, reference and uninitialized types respectively - see MethodVisitor). Long and double values are represented by a single element.
  • Method Details

    • getType

      public int getType()
      Description copied from class: AbstractInsnNode
      Returns the type of this instruction.
      Specified by:
      getType in class AbstractInsnNode
      Returns:
      the type of this instruction, i.e. one the constants defined in this class.
    • accept

      public void accept(org.objectweb.asm.MethodVisitor methodVisitor)
      Description copied from class: AbstractInsnNode
      Makes the given method visitor visit this instruction.
      Specified by:
      accept in class AbstractInsnNode
      Parameters:
      methodVisitor - a method visitor.
    • clone

      public AbstractInsnNode clone(Map<LabelNode,LabelNode> clonedLabels)
      Description copied from class: AbstractInsnNode
      Returns a copy of this instruction.
      Specified by:
      clone in class AbstractInsnNode
      Parameters:
      clonedLabels - a map from LabelNodes to cloned LabelNodes.
      Returns:
      a copy of this instruction. The returned instruction does not belong to any InsnList.