public static class StackMapTable.Walker
extends java.lang.Object
Constructor and Description |
---|
Walker(byte[] data)
Constructs a walker.
|
Walker(StackMapTable smt)
Constructs a walker.
|
Modifier and Type | Method and Description |
---|---|
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 |
objectOrUninitialized(int tag,
int data,
int pos)
Invoked if
Object_variable_info
or Uninitialized_variable_info is visited. |
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.
|
public Walker(StackMapTable smt)
smt
- the StackMapTable that this walker
walks around.public Walker(byte[] data)
data
- the info
field of the
attribute_info
structure.
It can be obtained by get()
in the AttributeInfo
class.public final int size()
public void parse() throws BadBytecode
BadBytecode
public void sameFrame(int pos, int offsetDelta) throws BadBytecode
same_frame
or
a same_frame_extended
.pos
- the position of this frame in the info
field of attribute_info
structure.offsetDelta
- BadBytecode
public void sameLocals(int pos, int offsetDelta, int stackTag, int stackData) throws BadBytecode
same_locals_1_stack_item_frame
or a same_locals_1_stack_item_frame_extended
.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
.BadBytecode
public void chopFrame(int pos, int offsetDelta, int k) throws BadBytecode
chop_frame
.pos
- the position.offsetDelta
- k
- the k
last locals are absent.BadBytecode
public void appendFrame(int pos, int offsetDelta, int[] tags, int[] data) throws BadBytecode
append_frame
.pos
- the position.offsetDelta
- tags
- locals[i].tag
.data
- locals[i].cpool_index
or locals[i].offset
.BadBytecode
public void fullFrame(int pos, int offsetDelta, int[] localTags, int[] localData, int[] stackTags, int[] stackData) throws BadBytecode
full_frame
.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
BadBytecode
public void objectOrUninitialized(int tag, int data, int pos)
Object_variable_info
or Uninitialized_variable_info
is visited.tag
- OBJECT
or UNINIT
.data
- the value of cpool_index
or offset
.pos
- the position of cpool_index
or offset
.Javassist, a Java-bytecode translator toolkit.
Copyright (C) 1999- Shigeru Chiba. All Rights Reserved.