Package javassist.bytecode.stackmap
Class Tracer
java.lang.Object
javassist.bytecode.stackmap.Tracer
- All Implemented Interfaces:
TypeTag
- Direct Known Subclasses:
MapMaker
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
checkParamTypes
(String desc, int i) private void
constructorCalled
(TypeData target, int offset) private int
doALOAD
(int localVar) private int
doASTORE
(int index) private void
doDUP_XX
(int delta, int len) private int
doGetField
(int pos, byte[] code, boolean notStatic) private int
doInvokeDynamic
(int pos, byte[] code) private int
doInvokeIntfMethod
(int pos, byte[] code) private int
doInvokeMethod
(int pos, byte[] code, boolean notStatic) private void
doLDC
(int index) private int
doMultiANewArray
(int pos, byte[] code) private int
doNEWARRAY
(int pos, byte[] code) protected int
doOpcode
(int pos, byte[] code) Does abstract interpretation on the given bytecode instruction.private int
doOpcode0_53
(int pos, byte[] code, int op) private int
doOpcode148_201
(int pos, byte[] code, int op) private int
doOpcode54_95
(int pos, byte[] code, int op) private int
doOpcode96_147
(int pos, byte[] code, int op) private int
doPutField
(int pos, byte[] code, boolean notStatic) private int
doWIDE
(int pos, byte[] code) private void
doWIDE_STORE
(int pos, byte[] code, TypeData type) private void
doWIDE_XLOAD
(int pos, byte[] code, TypeData type) private int
private int
private int
private int
private static String
getFieldClassName
(String desc, int index) private void
pushMemberType
(String descriptor) private void
setFieldTarget
(boolean notStatic, int index) protected void
visitBranch
(int pos, byte[] code, int offset) protected void
visitGoto
(int pos, byte[] code, int offset) protected void
visitJSR
(int pos, byte[] code) Invoked when the visited instruction is jsr.protected void
visitLookupSwitch
(int pos, byte[] code, int n, int pairsPos, int defaultOffset) protected void
visitRET
(int pos, byte[] code) Invoked when the visited instruction is ret or wide ret.protected void
visitReturn
(int pos, byte[] code) protected void
visitTableSwitch
(int pos, byte[] code, int n, int offsetPos, int defaultOffset) protected void
visitThrow
(int pos, byte[] code)
-
Field Details
-
classPool
-
cpool
-
returnType
-
stackTop
protected int stackTop -
stackTypes
-
localsTypes
-
-
Constructor Details
-
Tracer
-
Tracer
-
-
Method Details
-
doOpcode
Does 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
- Throws:
BadBytecode
-
visitGoto
- Throws:
BadBytecode
-
visitReturn
- Throws:
BadBytecode
-
visitThrow
- 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
Invoked when the visited instruction is jsr. Java6 or later does not allow using RET.- Throws:
BadBytecode
-
visitRET
Invoked when the visited instruction is ret or wide ret. Java6 or later does not allow using RET.- Throws:
BadBytecode
-
doOpcode0_53
- Throws:
BadBytecode
-
doLDC
private void doLDC(int index) -
doXLOAD
-
doXLOAD
-
doALOAD
private int doALOAD(int localVar) -
doOpcode54_95
- Throws:
BadBytecode
-
doXSTORE
-
doXSTORE
-
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
- Throws:
BadBytecode
-
doWIDE
- Throws:
BadBytecode
-
doWIDE_XLOAD
-
doWIDE_STORE
-
doPutField
- Throws:
BadBytecode
-
doGetField
- Throws:
BadBytecode
-
setFieldTarget
- Throws:
BadBytecode
-
doNEWARRAY
private int doNEWARRAY(int pos, byte[] code) -
doMultiANewArray
private int doMultiANewArray(int pos, byte[] code) -
doInvokeMethod
- Throws:
BadBytecode
-
constructorCalled
-
doInvokeIntfMethod
- Throws:
BadBytecode
-
doInvokeDynamic
- Throws:
BadBytecode
-
pushMemberType
-
getFieldClassName
-
checkParamTypes
- Throws:
BadBytecode
-