Class StackMapTable.Writer

java.lang.Object
javassist.bytecode.StackMapTable.Writer
Enclosing class:
StackMapTable

public static class StackMapTable.Writer extends Object
A writer of stack map tables.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Writer(int size)
    Constructs a writer.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    appendFrame(int offsetDelta, int[] tags, int[] data)
    Writes a append_frame.
    void
    chopFrame(int offsetDelta, int k)
    Writes a chop_frame.
    void
    fullFrame(int offsetDelta, int[] localTags, int[] localData, int[] stackTags, int[] stackData)
    Writes a full_frame.
    void
    sameFrame(int offsetDelta)
    Writes a same_frame or a same_frame_extended.
    void
    sameLocals(int offsetDelta, int tag, int data)
    Writes a same_locals_1_stack_item or a same_locals_1_stack_item_extended.
    byte[]
    Returns the stack map table written out.
    Constructs and a return a stack map table containing the written stack map entries.

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • Writer

      public Writer(int size)
      Constructs a writer.
      Parameters:
      size - the initial buffer size.
  • Method Details

    • toByteArray

      public byte[] toByteArray()
      Returns the stack map table written out.
    • toStackMapTable

      public StackMapTable toStackMapTable(ConstPool cp)
      Constructs and a return a stack map table containing the written stack map entries.
      Parameters:
      cp - the constant pool used to write the stack map entries.
    • sameFrame

      public void sameFrame(int offsetDelta)
      Writes a same_frame or a same_frame_extended.
    • sameLocals

      public void sameLocals(int offsetDelta, int tag, int data)
      Writes a same_locals_1_stack_item or a same_locals_1_stack_item_extended.
      Parameters:
      tag - stack[0].tag.
      data - stack[0].cpool_index if the tag is OBJECT, or stack[0].offset if the tag is UNINIT. Otherwise, this parameter is not used.
    • chopFrame

      public void chopFrame(int offsetDelta, int k)
      Writes a chop_frame.
      Parameters:
      k - the number of absent locals. 1, 2, or 3.
    • appendFrame

      public void appendFrame(int offsetDelta, int[] tags, int[] data)
      Writes a append_frame. The number of the appended locals is specified by the length of tags.
      Parameters:
      tags - locals[].tag. The length of this array must be either 1, 2, or 3.
      data - locals[].cpool_index if the tag is OBJECT, or locals[].offset if the tag is UNINIT. Otherwise, this parameter is not used.
    • fullFrame

      public void fullFrame(int offsetDelta, int[] localTags, int[] localData, int[] stackTags, int[] stackData)
      Writes a full_frame. number_of_locals and number_of_stack_items are specified by the the length of localTags and stackTags.
      Parameters:
      localTags - locals[].tag.
      localData - locals[].cpool_index if the tag is OBJECT, or locals[].offset if the tag is UNINIT. Otherwise, this parameter is not used.
      stackTags - stack[].tag.
      stackData - stack[].cpool_index if the tag is OBJECT, or stack[].offset if the tag is UNINIT. Otherwise, this parameter is not used.