static class StackMapTable.Shifter extends StackMapTable.Walker
| Modifier and Type | Field and Description |
|---|---|
(package private) boolean |
exclusive |
(package private) int |
gap |
(package private) int |
position |
private StackMapTable |
stackMap |
(package private) byte[] |
updatedInfo |
(package private) int |
where |
info, numOfEntries| Constructor and Description |
|---|
Shifter(StackMapTable smt,
int where,
int gap,
boolean exclusive) |
| 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 |
doit() |
void |
fullFrame(int pos,
int offsetDelta,
int[] localTags,
int[] localData,
int[] stackTags,
int[] stackData)
Invoked if the visited frame is
full_frame. |
(package private) static byte[] |
insertGap(byte[] info,
int where,
int gap) |
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. |
(package private) void |
update(int pos,
int offsetDelta) |
(package private) void |
update(int pos,
int offsetDelta,
int base,
int entry) |
objectOrUninitialized, parse, size, stackMapFramesprivate StackMapTable stackMap
int where
int gap
int position
byte[] updatedInfo
boolean exclusive
public Shifter(StackMapTable smt, int where, int gap, boolean exclusive)
public void doit()
throws BadBytecode
BadBytecodepublic void sameFrame(int pos,
int offsetDelta)
StackMapTable.Walkersame_frame or
a same_frame_extended.sameFrame in class StackMapTable.Walkerpos - the position of this frame in the info
field of attribute_info structure.public void sameLocals(int pos,
int offsetDelta,
int stackTag,
int stackData)
StackMapTable.Walkersame_locals_1_stack_item_frame
or a same_locals_1_stack_item_frame_extended.sameLocals in class StackMapTable.Walkerpos - the position.stackTag - stack[0].tag.stackData - stack[0].cpool_index
if the tag is OBJECT,
or stack[0].offset
if the tag is UNINIT.void update(int pos,
int offsetDelta,
int base,
int entry)
static byte[] insertGap(byte[] info,
int where,
int gap)
public void chopFrame(int pos,
int offsetDelta,
int k)
StackMapTable.Walkerchop_frame.chopFrame in class StackMapTable.Walkerpos - the position.k - the public void appendFrame(int pos,
int offsetDelta,
int[] tags,
int[] data)
StackMapTable.Walkerappend_frame.appendFrame in class StackMapTable.Walkerpos - the position.tags - locals[i].tag.data - locals[i].cpool_index
or public void fullFrame(int pos,
int offsetDelta,
int[] localTags,
int[] localData,
int[] stackTags,
int[] stackData)
StackMapTable.Walkerfull_frame.fullFrame in class StackMapTable.Walkerpos - the position.localTags - locals[i].taglocalData - locals[i].cpool_index
or locals[i].offsetstackTags - stack[i].tagstackData - stack[i].cpool_index
or stack[i].offsetvoid update(int pos,
int offsetDelta)