FrameNode (ASM 5.0.4 Documentation)
Date: 2015-09-18

org.objectweb.asm.tree

## Class FrameNode

- java.lang.Object
- - org.objectweb.asm.tree.AbstractInsnNode
  - - org.objectweb.asm.tree.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 `V1_6`.
  Author:
    Eric Bruneton

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `List<Object>` | `local` The types of the local variables of this stack map frame.
    `List<Object>` | `stack` The types of the operand stack elements of this stack map frame.
    `int` | `type` The type of this frame.

    - ### Fields inherited from class org.objectweb.asm.tree.AbstractInsnNode

      `FIELD_INSN, FRAME, IINC_INSN, INSN, INT_INSN, invisibleTypeAnnotations, INVOKE_DYNAMIC_INSN, JUMP_INSN, LABEL, LDC_INSN, LINE, LOOKUPSWITCH_INSN, METHOD_INSN, MULTIANEWARRAY_INSN, opcode, TABLESWITCH_INSN, TYPE_INSN, VAR_INSN, visibleTypeAnnotations`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `FrameNode(int type, int nLocal, Object[] local, int nStack, Object[] stack)` Constructs a new `FrameNode`.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `accept(MethodVisitor mv)` Makes the given visitor visit this stack map frame.
    `AbstractInsnNode` | `clone(Map<LabelNode,LabelNode> labels)` Returns a copy of this instruction.
    `int` | `getType()` Returns the type of this instruction.

    - ### Methods inherited from class org.objectweb.asm.tree.AbstractInsnNode

      `acceptAnnotations, cloneAnnotations, getNext, getOpcode, getPrevious`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### 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 Detail

    - #### FrameNode

          public FrameNode(int type,
                   int nLocal,
                   Object[] local,
                   int nStack,
                   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.
        `nLocal` - number of local variables of this stack map frame.
        `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`).
        `nStack` - number of operand stack elements of this stack map frame.
        `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`).

  - ### Method Detail

    - #### 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(MethodVisitor mv)

      Makes the given visitor visit this stack map frame.
      Specified by:
        `accept` in class `AbstractInsnNode`
      Parameters:
        `mv` - a method visitor.

    - #### clone

          public AbstractInsnNode clone(Map<LabelNode,LabelNode> labels)

      Description copied from class: `AbstractInsnNode`
      Returns a copy of this instruction.
      Specified by:
        `clone` in class `AbstractInsnNode`
      Parameters:
        `labels` - a map from LabelNodes to cloned LabelNodes.
      Returns:
        a copy of this instruction. The returned instruction does not belong to any `InsnList`.