classPool, cpool, localsTypes, returnType, stackTop, stackTypes
Modifier | Constructor and Description |
---|---|
|
MapMaker(ClassPool classes,
MethodInfo minfo,
CodeAttribute ca) |
protected |
MapMaker(MapMaker old) |
Modifier and Type | Method and Description |
---|---|
protected static void |
copyTypeData(int n,
TypeData[] srcTypes,
TypeData[] destTypes) |
private static int |
diffSize(TypeData[] types,
int offset,
int len) |
private int[] |
fillStackMap(int num,
int offset,
int[] data,
TypeData[] types) |
private void |
findDeadCatchers(byte[] code,
TypedBlock[] blocks) |
private void |
fixDeadcode(byte[] code,
TypedBlock block) |
private void |
fixTypes(byte[] code,
TypedBlock[] blocks) |
private boolean |
isTarget(TypedBlock cur,
TypedBlock prev)
Returns true if cur is a branch target.
|
private void |
make(byte[] code,
TypedBlock tb) |
static StackMapTable |
make(ClassPool classes,
MethodInfo minfo)
Computes the stack map table of the given method and returns it.
|
(package private) void |
make(TypedBlock[] blocks,
byte[] code)
Runs an analyzer (Phase 1 and 2).
|
static StackMap |
make2(ClassPool classes,
MethodInfo minfo)
Computes the stack map table for J2ME.
|
private TypeData |
merge(TypeData src,
TypeData target) |
private void |
mergeMap(TypedBlock dest,
boolean mergeStack) |
private void |
recordStackMap(TypedBlock target) |
private void |
recordStackMap(TypedBlock target,
int exceptionType) |
private void |
recordStackMap0(TypedBlock target,
int st,
TypeData[] tStackTypes) |
protected static int |
recordTypeData(int n,
TypeData[] srcTypes,
TypeData[] destTypes) |
private static int |
stackMapDiff(int oldTdLen,
TypeData[] oldTd,
int newTdLen,
TypeData[] newTd) |
private static boolean |
stackMapEq(TypeData[] oldTd,
TypeData[] newTd,
int len) |
private TypeData.ClassName |
toExceptionType(int exceptionType) |
StackMapTable |
toStackMap(TypedBlock[] blocks) |
StackMap |
toStackMap2(ConstPool cp,
TypedBlock[] blocks) |
private void |
toStackMapBody(StackMapTable.Writer writer,
TypedBlock bb,
int diffL,
int offsetDelta,
TypedBlock prev) |
private void |
traceException(byte[] code,
BasicBlock.Catch handler) |
private static TypeData |
validateTypeData(TypeData[] data,
int length,
int index) |
private void |
writeStackFrame(StackMap.Writer writer,
ConstPool cp,
int offset,
TypedBlock tb) |
private void |
writeVerifyTypeInfo(StackMap.Writer writer,
ConstPool cp,
TypeData[] types,
int num) |
doOpcode, visitBranch, visitGoto, visitJSR, visitLookupSwitch, visitRET, visitReturn, visitTableSwitch, visitThrow
public MapMaker(ClassPool classes, MethodInfo minfo, CodeAttribute ca)
protected MapMaker(MapMaker old)
public static StackMapTable make(ClassPool classes, MethodInfo minfo) throws BadBytecode
BadBytecode
public static StackMap make2(ClassPool classes, MethodInfo minfo) throws BadBytecode
BadBytecode
void make(TypedBlock[] blocks, byte[] code) throws BadBytecode
BadBytecode
private void make(byte[] code, TypedBlock tb) throws BadBytecode
BadBytecode
private void traceException(byte[] code, BasicBlock.Catch handler) throws BadBytecode
BadBytecode
private void mergeMap(TypedBlock dest, boolean mergeStack) throws BadBytecode
BadBytecode
private TypeData merge(TypeData src, TypeData target) throws BadBytecode
BadBytecode
private void recordStackMap(TypedBlock target) throws BadBytecode
BadBytecode
private void recordStackMap(TypedBlock target, int exceptionType) throws BadBytecode
BadBytecode
private TypeData.ClassName toExceptionType(int exceptionType)
private void recordStackMap0(TypedBlock target, int st, TypeData[] tStackTypes) throws BadBytecode
BadBytecode
protected static int recordTypeData(int n, TypeData[] srcTypes, TypeData[] destTypes)
private void findDeadCatchers(byte[] code, TypedBlock[] blocks) throws BadBytecode
BadBytecode
private void fixDeadcode(byte[] code, TypedBlock block) throws BadBytecode
BadBytecode
private void fixTypes(byte[] code, TypedBlock[] blocks) throws NotFoundException, BadBytecode
NotFoundException
BadBytecode
public StackMapTable toStackMap(TypedBlock[] blocks)
private boolean isTarget(TypedBlock cur, TypedBlock prev)
private void toStackMapBody(StackMapTable.Writer writer, TypedBlock bb, int diffL, int offsetDelta, TypedBlock prev)
private int[] fillStackMap(int num, int offset, int[] data, TypeData[] types)
private static int stackMapDiff(int oldTdLen, TypeData[] oldTd, int newTdLen, TypeData[] newTd)
private static int diffSize(TypeData[] types, int offset, int len)
public StackMap toStackMap2(ConstPool cp, TypedBlock[] blocks)
private void writeStackFrame(StackMap.Writer writer, ConstPool cp, int offset, TypedBlock tb)
private void writeVerifyTypeInfo(StackMap.Writer writer, ConstPool cp, TypeData[] types, int num)