javassist.bytecode
Class StackMapTable.Walker

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

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

A code walker for a StackMapTable attribute.


Constructor Summary
StackMapTable.Walker(byte[] data)
          Constructs a walker.
StackMapTable.Walker(StackMapTable smt)
          Constructs a walker.
 
Method Summary
 void appendFrame(int pos, int offsetDelta, int[] tags, int[] data)
          Invoked if the visited frame is a append_frame.
 void chopFrame(int pos, int offsetDelta, int k)
          Invoked if the visited frame is a chop_frame.
 void fullFrame(int pos, int offsetDelta, int[] localTags, int[] localData, int[] stackTags, int[] stackData)
          Invoked if the visited frame is full_frame.
 void parse()
          Visits each entry of the stack map frames.
 void sameFrame(int pos, int offsetDelta)
          Invoked if the visited frame is a same_frame or a same_frame_extended.
 void sameLocals(int pos, int offsetDelta, int stackTag, int stackData)
          Invoked if the visited frame is a same_locals_1_stack_item_frame or a same_locals_1_stack_item_frame_extended.
 int size()
          Returns the number of the entries.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

StackMapTable.Walker

public StackMapTable.Walker(StackMapTable smt)
Constructs a walker.

Parameters:
smt - the StackMapTable that this walker walks around.

StackMapTable.Walker

public StackMapTable.Walker(byte[] data)
Constructs a walker.

Parameters:
data - the info field of the attribute_info structure. It can be obtained by get() in the AttributeInfo class.
Method Detail

size

public final int size()
Returns the number of the entries.


parse

public void parse()
           throws BadBytecode
Visits each entry of the stack map frames.

Throws:
BadBytecode

sameFrame

public void sameFrame(int pos,
                      int offsetDelta)
               throws BadBytecode
Invoked if the visited frame is a same_frame or a same_frame_extended.

Parameters:
pos - the position of this frame in the info field of attribute_info structure.
offsetDelta -
Throws:
BadBytecode

sameLocals

public void sameLocals(int pos,
                       int offsetDelta,
                       int stackTag,
                       int stackData)
                throws BadBytecode
Invoked if the visited frame is a same_locals_1_stack_item_frame or a same_locals_1_stack_item_frame_extended.

Parameters:
pos - the position.
offsetDelta -
stackTag - stack[0].tag.
stackData - stack[0].cpool_index if the tag is OBJECT, or stack[0].offset if the tag is UNINIT.
Throws:
BadBytecode

chopFrame

public void chopFrame(int pos,
                      int offsetDelta,
                      int k)
               throws BadBytecode
Invoked if the visited frame is a chop_frame.

Parameters:
pos - the position.
offsetDelta -
k - the k last locals are absent.
Throws:
BadBytecode

appendFrame

public void appendFrame(int pos,
                        int offsetDelta,
                        int[] tags,
                        int[] data)
                 throws BadBytecode
Invoked if the visited frame is a append_frame.

Parameters:
pos - the position.
offsetDelta -
tags - locals[i].tag.
data - locals[i].cpool_index or locals[i].offset.
Throws:
BadBytecode

fullFrame

public void fullFrame(int pos,
                      int offsetDelta,
                      int[] localTags,
                      int[] localData,
                      int[] stackTags,
                      int[] stackData)
               throws BadBytecode
Invoked if the visited frame is full_frame.

Parameters:
pos - the position.
offsetDelta -
localTags - locals[i].tag
localData - locals[i].cpool_index or locals[i].offset
stackTags - stack[i].tag
stackData - stack[i].cpool_index or stack[i].offset
Throws:
BadBytecode


Copyright © 2011. All Rights Reserved.