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, stackMapFrames
private 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
BadBytecode
public void sameFrame(int pos, int offsetDelta)
StackMapTable.Walker
same_frame
or
a same_frame_extended
.sameFrame
in class StackMapTable.Walker
pos
- 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.Walker
same_locals_1_stack_item_frame
or a same_locals_1_stack_item_frame_extended
.sameLocals
in class StackMapTable.Walker
pos
- 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.Walker
chop_frame
.chopFrame
in class StackMapTable.Walker
pos
- the position.k
- the public void appendFrame(int pos, int offsetDelta, int[] tags, int[] data)
StackMapTable.Walker
append_frame
.appendFrame
in class StackMapTable.Walker
pos
- 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.Walker
full_frame
.fullFrame
in class StackMapTable.Walker
pos
- the position.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
void update(int pos, int offsetDelta)