org.objectweb.asm.tree

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 V1_6.
Author:
Eric Bruneton

Field Summary

List
local
The types of the local variables of this stack map frame.
List
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, JUMP_INSN, LABEL, LDC_INSN, LINE, LOOKUPSWITCH_INSN, METHOD_INSN, MULTIANEWARRAY_INSN, TABLESWITCH_INSN, TYPE_INSN, VAR_INSN, opcode

Constructor Summary

FrameNode(int type, int nLocal, Object[] local, int nStack, Object[] stack)
Constructs a new FrameNode.

Method Summary

void
accept(MethodVisitor mv)
Makes the given visitor visit this stack map frame.
AbstractInsnNode
clone(Map labels)
Returns a copy of this instruction.
int
getType()
Returns the type of this instruction.

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

accept, clone, getNext, getOpcode, getPrevious, getType

Field Details

local

public List local

stack

public List stack

type

public int type

Constructor Details

FrameNode

public FrameNode(int type,
                 int nLocal,
                 Object[] local,
                 int nStack,
                 Object[] stack)
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 Details

accept

public void accept(MethodVisitor mv)
Makes the given visitor visit this stack map frame.
Overrides:
accept in interface AbstractInsnNode
Parameters:
mv - a method visitor.

clone

public AbstractInsnNode clone(Map labels)
Returns a copy of this instruction.
Overrides:
clone in interface 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.

getType

public int getType()
Returns the type of this instruction.
Overrides:
getType in interface AbstractInsnNode
Returns:
the type of this instruction, i.e. one the constants defined in this class.