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:
  • Field Details

    • EMPTY_ARRAY

      static final StackMapEntry[] EMPTY_ARRAY
    • frameType

      private int frameType
    • byteCodeOffset

      private int byteCodeOffset
    • typesOfLocals

      private StackMapType[] typesOfLocals
    • typesOfStackItems

      private StackMapType[] typesOfStackItems
    • constantPool

      private ConstantPool constantPool
  • Constructor Details

  • 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()
    • getMapEntrySize

      int getMapEntrySize()
      Calculate stack map entry size
    • getNumberOfLocals

      public int getNumberOfLocals()
    • getNumberOfStackItems

      public int getNumberOfStackItems()
    • getTypesOfLocals

      public StackMapType[] getTypesOfLocals()
    • getTypesOfStackItems

      public StackMapType[] getTypesOfStackItems()
    • invalidFrameType

      private boolean invalidFrameType(int f)
    • 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