Package org.apache.bcel.classfile

# Class StackMapEntry

java.lang.Object
org.apache.bcel.classfile.StackMapEntry

All Implemented Interfaces:
  `Cloneable`, `Node`

public final class StackMapEntry extends Object implements Node, Cloneable
This class represents a stack map entry recording the types of local variables and the of stack items at a given byte code offset. See CLDC specification 5.3.1.2. See also https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.4

     union stack_map_frame {
       same_frame;
       same_locals_1_stack_item_frame;
       same_locals_1_stack_item_frame_extended;
       chop_frame;
       same_frame_extended;
       append_frame;
       full_frame;
     }

See Also:
  - `StackMap`
  - `StackMapType`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `StackMapEntry(int byteCodeOffset, int numberOfLocals, StackMapType[] typesOfLocals, int numberOfStackItems, StackMapType[] typesOfStackItems, ConstantPool constantPool)`
  Deprecated.
  Since 6.0, use `StackMapEntry(int, int, StackMapType[], StackMapType[], ConstantPool)` instead
  `StackMapEntry(int tag, int byteCodeOffset, StackMapType[] typesOfLocals, StackMapType[] typesOfStackItems, ConstantPool constantPool)`
  Create an instance

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `accept(Visitor v)`
  Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class.
  `StackMapEntry`
  `copy()`
  `void`
  `dump(DataOutputStream file)`
  Dump stack map entry
  `int`
  `getByteCodeOffset()`
  `ConstantPool`
  `getConstantPool()`
  `int`
  `getFrameType()`
  `int`
  `getNumberOfLocals()`
  `int`
  `getNumberOfStackItems()`
  `StackMapType[]`
  `getTypesOfLocals()`
  `StackMapType[]`
  `getTypesOfStackItems()`
  `void`
  `setByteCodeOffset(int newOffset)`
  `void`
  `setConstantPool(ConstantPool constantPool)`
  `void`
  `setFrameType(int ft)`
  `void`
  `setNumberOfLocals(int n)`
  Deprecated.
  since 6.0
  `void`
  `setNumberOfStackItems(int n)`
  Deprecated.
  since 6.0
  `void`
  `setTypesOfLocals(StackMapType[] types)`
  `void`
  `setTypesOfStackItems(StackMapType[] types)`
  `String`
  `toString()`
  `void`
  `updateByteCodeOffset(int delta)`
  Update the distance (as an offset delta) from this StackMap entry to the next.

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

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

- ## Constructor Details

  - ### StackMapEntry

    @Deprecated public StackMapEntry(int byteCodeOffset, int numberOfLocals, StackMapType[] typesOfLocals, int numberOfStackItems, StackMapType[] typesOfStackItems, ConstantPool constantPool)
    Deprecated.
    Since 6.0, use `StackMapEntry(int, int, StackMapType[], StackMapType[], ConstantPool)` instead
    DO NOT USE
    Parameters:
      `byteCodeOffset` -
      `numberOfLocals` - NOT USED
      `typesOfLocals` - array of `StackMapType`s of locals
      `numberOfStackItems` - NOT USED
      `typesOfStackItems` - array ot `StackMapType`s of stack items
      `constantPool` - the constant pool

  - ### StackMapEntry

    public StackMapEntry(int tag, int byteCodeOffset, StackMapType[] typesOfLocals, StackMapType[] typesOfStackItems, ConstantPool constantPool)
    Create an instance
    Parameters:
      `tag` - the frameType to use
      `byteCodeOffset` -
      `typesOfLocals` - array of `StackMapType`s of locals
      `typesOfStackItems` - array ot `StackMapType`s of stack items
      `constantPool` - the constant pool

- ## Method Details

  - ### accept

    public void accept(Visitor v)
    Called by objects that are traversing the nodes of the tree implicitly defined by the contents of a Java class. I.e., the hierarchy of methods, fields, attributes, etc. spawns a tree of objects.
    Specified by:
      `accept` in interface `Node`
    Parameters:
      `v` - Visitor object

  - ### copy

    public StackMapEntry copy()
    Returns:
      deep copy of this object

  - ### dump

    public void dump(DataOutputStream file) throws IOException
    Dump stack map entry
    Parameters:
      `file` - Output file stream
    Throws:
      `IOException` - if an I/O error occurs.

  - ### getByteCodeOffset

    public int getByteCodeOffset()

  - ### getConstantPool

    public ConstantPool getConstantPool()
    Returns:
      Constant pool used by this object.

  - ### getFrameType

    public int getFrameType()

  - ### getNumberOfLocals

    public int getNumberOfLocals()

  - ### getNumberOfStackItems

    public int getNumberOfStackItems()

  - ### getTypesOfLocals

    public StackMapType[] getTypesOfLocals()

  - ### getTypesOfStackItems

    public StackMapType[] getTypesOfStackItems()

  - ### setByteCodeOffset

    public void setByteCodeOffset(int newOffset)

  - ### setConstantPool

    public void setConstantPool(ConstantPool constantPool)
    Parameters:
      `constantPool` - Constant pool to be used for this object.

  - ### setFrameType

    public void setFrameType(int ft)

  - ### setNumberOfLocals

    @Deprecated public void setNumberOfLocals(int n)
    Deprecated.
    since 6.0

  - ### setNumberOfStackItems

    @Deprecated public void setNumberOfStackItems(int n)
    Deprecated.
    since 6.0

  - ### setTypesOfLocals

    public void setTypesOfLocals(StackMapType[] types)

  - ### setTypesOfStackItems

    public void setTypesOfStackItems(StackMapType[] types)

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`
    Returns:
      String representation.

  - ### updateByteCodeOffset

    public void updateByteCodeOffset(int delta)
    Update the distance (as an offset delta) from this StackMap entry to the next. Note that this might cause the frame type to change. Note also that delta may be negative.
    Parameters:
      `delta` - offset delta