Package javassist.bytecode.stackmap
Class Tracer
- java.lang.Object
-
- javassist.bytecode.stackmap.Tracer
-
-
Field Summary
Fields Modifier and Type Field Description protected ClassPoolclassPoolprotected ConstPoolcpoolprotected TypeData[]localsTypesprotected java.lang.StringreturnTypeprotected intstackTopprotected TypeData[]stackTypes
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidcheckParamTypes(java.lang.String desc, int i)private voidconstructorCalled(TypeData target, int offset)private intdoALOAD(int localVar)private intdoASTORE(int index)private voiddoDUP_XX(int delta, int len)private intdoGetField(int pos, byte[] code, boolean notStatic)private intdoInvokeDynamic(int pos, byte[] code)private intdoInvokeIntfMethod(int pos, byte[] code)private intdoInvokeMethod(int pos, byte[] code, boolean notStatic)private voiddoLDC(int index)private intdoMultiANewArray(int pos, byte[] code)private intdoNEWARRAY(int pos, byte[] code)protected intdoOpcode(int pos, byte[] code)Does abstract interpretation on the given bytecode instruction.private intdoOpcode0_53(int pos, byte[] code, int op)private intdoOpcode148_201(int pos, byte[] code, int op)private intdoOpcode54_95(int pos, byte[] code, int op)private intdoOpcode96_147(int pos, byte[] code, int op)private intdoPutField(int pos, byte[] code, boolean notStatic)private intdoWIDE(int pos, byte[] code)private voiddoWIDE_STORE(int pos, byte[] code, TypeData type)private voiddoWIDE_XLOAD(int pos, byte[] code, TypeData type)private intdoXLOAD(int localVar, TypeData type)private intdoXLOAD(TypeData type, byte[] code, int pos)private intdoXSTORE(int pos, byte[] code, TypeData type)private intdoXSTORE(int index, TypeData type)private static java.lang.StringgetFieldClassName(java.lang.String desc, int index)private voidpushMemberType(java.lang.String descriptor)private voidsetFieldTarget(boolean notStatic, int index)protected voidvisitBranch(int pos, byte[] code, int offset)protected voidvisitGoto(int pos, byte[] code, int offset)protected voidvisitJSR(int pos, byte[] code)Invoked when the visited instruction is jsr.protected voidvisitLookupSwitch(int pos, byte[] code, int n, int pairsPos, int defaultOffset)protected voidvisitRET(int pos, byte[] code)Invoked when the visited instruction is ret or wide ret.protected voidvisitReturn(int pos, byte[] code)protected voidvisitTableSwitch(int pos, byte[] code, int n, int offsetPos, int defaultOffset)protected voidvisitThrow(int pos, byte[] code)
-
-
-
Method Detail
-
doOpcode
protected int doOpcode(int pos, byte[] code) throws BadBytecodeDoes abstract interpretation on the given bytecode instruction. It records whether or not a local variable (i.e. register) is accessed. If the instruction requires that a local variable or a stack element has a more specific type, this method updates the type of it.- Parameters:
pos- the position of the instruction.- Returns:
- the size of the instruction at POS.
- Throws:
BadBytecode
-
visitBranch
protected void visitBranch(int pos, byte[] code, int offset) throws BadBytecode- Throws:
BadBytecode
-
visitGoto
protected void visitGoto(int pos, byte[] code, int offset) throws BadBytecode- Throws:
BadBytecode
-
visitReturn
protected void visitReturn(int pos, byte[] code) throws BadBytecode- Throws:
BadBytecode
-
visitThrow
protected void visitThrow(int pos, byte[] code) throws BadBytecode- Throws:
BadBytecode
-
visitTableSwitch
protected void visitTableSwitch(int pos, byte[] code, int n, int offsetPos, int defaultOffset) throws BadBytecode- Parameters:
pos- the position of TABLESWITCHcode- bytecoden- the number of case labelsoffsetPos- the position of the branch-target table.defaultOffset- the offset to the default branch target.- Throws:
BadBytecode
-
visitLookupSwitch
protected void visitLookupSwitch(int pos, byte[] code, int n, int pairsPos, int defaultOffset) throws BadBytecode- Parameters:
pos- the position of LOOKUPSWITCHcode- bytecoden- the number of case labelspairsPos- the position of the table of pairs of a value and a branch target.defaultOffset- the offset to the default branch target.- Throws:
BadBytecode
-
visitJSR
protected void visitJSR(int pos, byte[] code) throws BadBytecodeInvoked when the visited instruction is jsr. Java6 or later does not allow using RET.- Throws:
BadBytecode
-
visitRET
protected void visitRET(int pos, byte[] code) throws BadBytecodeInvoked when the visited instruction is ret or wide ret. Java6 or later does not allow using RET.- Throws:
BadBytecode
-
doOpcode0_53
private int doOpcode0_53(int pos, byte[] code, int op) throws BadBytecode- Throws:
BadBytecode
-
doLDC
private void doLDC(int index)
-
doXLOAD
private int doXLOAD(TypeData type, byte[] code, int pos)
-
doXLOAD
private int doXLOAD(int localVar, TypeData type)
-
doALOAD
private int doALOAD(int localVar)
-
doOpcode54_95
private int doOpcode54_95(int pos, byte[] code, int op) throws BadBytecode- Throws:
BadBytecode
-
doXSTORE
private int doXSTORE(int pos, byte[] code, TypeData type)
-
doXSTORE
private int doXSTORE(int index, TypeData type)
-
doASTORE
private int doASTORE(int index)
-
doDUP_XX
private void doDUP_XX(int delta, int len)
-
doOpcode96_147
private int doOpcode96_147(int pos, byte[] code, int op)
-
doOpcode148_201
private int doOpcode148_201(int pos, byte[] code, int op) throws BadBytecode- Throws:
BadBytecode
-
doWIDE
private int doWIDE(int pos, byte[] code) throws BadBytecode- Throws:
BadBytecode
-
doWIDE_XLOAD
private void doWIDE_XLOAD(int pos, byte[] code, TypeData type)
-
doWIDE_STORE
private void doWIDE_STORE(int pos, byte[] code, TypeData type)
-
doPutField
private int doPutField(int pos, byte[] code, boolean notStatic) throws BadBytecode- Throws:
BadBytecode
-
doGetField
private int doGetField(int pos, byte[] code, boolean notStatic) throws BadBytecode- Throws:
BadBytecode
-
setFieldTarget
private void setFieldTarget(boolean notStatic, int index) throws BadBytecode- Throws:
BadBytecode
-
doNEWARRAY
private int doNEWARRAY(int pos, byte[] code)
-
doMultiANewArray
private int doMultiANewArray(int pos, byte[] code)
-
doInvokeMethod
private int doInvokeMethod(int pos, byte[] code, boolean notStatic) throws BadBytecode- Throws:
BadBytecode
-
constructorCalled
private void constructorCalled(TypeData target, int offset)
-
doInvokeIntfMethod
private int doInvokeIntfMethod(int pos, byte[] code) throws BadBytecode- Throws:
BadBytecode
-
doInvokeDynamic
private int doInvokeDynamic(int pos, byte[] code) throws BadBytecode- Throws:
BadBytecode
-
pushMemberType
private void pushMemberType(java.lang.String descriptor)
-
getFieldClassName
private static java.lang.String getFieldClassName(java.lang.String desc, int index)
-
checkParamTypes
private void checkParamTypes(java.lang.String desc, int i) throws BadBytecode- Throws:
BadBytecode
-
-