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
equals, 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.


Javassist, a Java-bytecode translator toolkit.
Copyright (C) 1999-2008 Shigeru Chiba. All Rights Reserved.