Class StackMapTable.Writer

  • Enclosing class:
    StackMapTable

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

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

      All Methods Instance Methods Concrete Methods 
      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[] toByteArray()
      Returns the stack map table written out.
      StackMapTable toStackMapTable​(ConstPool cp)
      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 Detail

      • Writer

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

      • 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.