javassist.bytecode
Class StackMapTable.Writer

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

public static class StackMapTable.Writer
extends java.lang.Object

A writer of stack map tables.


Constructor Summary
StackMapTable.Writer(int size)
          Constructs a writer.
 
Method Summary
 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
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StackMapTable.Writer

public StackMapTable.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.


Copyright © 2011. All Rights Reserved.