Package javassist.bytecode

# 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[]`
`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 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.