类 Analyzer<V extends Value>
java.lang.Object
org.beetl.ow2.asm.tree.analysis.Analyzer<V>
- 类型参数:
V- type of the Value used for the analysis.
- 所有已实现的接口:
Opcodes
A semantic bytecode analyzer. This class does not fully check that JSR and
RET instructions are valid.
- 作者:
- Eric Bruneton
-
字段概要
从接口继承的字段 org.beetl.ow2.asm.Opcodes
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM4, ASM5, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8 -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明analyze(String owner, MethodNode m) Analyzes the given method.Returns the symbolic stack frame for each instruction of the last recently analyzed method.getHandlers(int insn) Returns the exception handlers for the given instruction.protected voidinit(String owner, MethodNode m) Initializes this analyzer.protected voidnewControlFlowEdge(int insn, int successor) Creates a control flow graph edge.protected booleannewControlFlowExceptionEdge(int insn, int successor) Creates a control flow graph edge corresponding to an exception handler.protected booleannewControlFlowExceptionEdge(int insn, TryCatchBlockNode tcb) Creates a control flow graph edge corresponding to an exception handler.newFrame(int nLocals, int nStack) Constructs a new frame with the given size.Constructs a new frame that is identical to the given frame.
-
构造器详细资料
-
Analyzer
Constructs a newAnalyzer.- 参数:
interpreter- the interpreter to be used to symbolically interpret the bytecode instructions.
-
-
方法详细资料
-
analyze
Analyzes the given method.- 参数:
owner- the internal className of the class to which the method belongs.m- the method to be analyzed.- 返回:
- the symbolic state of the execution stack frame at each bytecode instruction of the method. The size of the returned array is equal to the number of instructions (and labels) of the method. A given frame is null if and only if the corresponding instruction cannot be reached (dead code).
- 抛出:
AnalyzerException- if a problem occurs during the analysis.
-
getFrames
Returns the symbolic stack frame for each instruction of the last recently analyzed method.- 返回:
- the symbolic state of the execution stack frame at each bytecode instruction of the method. The size of the returned array is equal to the number of instructions (and labels) of the method. A given frame is null if the corresponding instruction cannot be reached, or if an error occured during the analysis of the method.
-
getHandlers
Returns the exception handlers for the given instruction.- 参数:
insn- the index of an instruction of the last recently analyzed method.- 返回:
- a list of
TryCatchBlockNodeobjects.
-
init
Initializes this analyzer. This method is called just before the execution of control flow analysis loop in #analyze. The default implementation of this method does nothing.- 参数:
owner- the internal className of the class to which the method belongs.m- the method to be analyzed.- 抛出:
AnalyzerException- if a problem occurs.
-
newFrame
Constructs a new frame with the given size.- 参数:
nLocals- the maximum number of local variables of the frame.nStack- the maximum stack size of the frame.- 返回:
- the created frame.
-
newFrame
Constructs a new frame that is identical to the given frame.- 参数:
src- a frame.- 返回:
- the created frame.
-
newControlFlowEdge
protected void newControlFlowEdge(int insn, int successor) Creates a control flow graph edge. The default implementation of this method does nothing. It can be overriden in order to construct the control flow graph of a method (this method is called by theanalyzemethod during its visit of the method's code).- 参数:
insn- an instruction index.successor- index of a successor instruction.
-
newControlFlowExceptionEdge
protected boolean newControlFlowExceptionEdge(int insn, int successor) Creates a control flow graph edge corresponding to an exception handler. The default implementation of this method does nothing. It can be overridden in order to construct the control flow graph of a method (this method is called by theanalyzemethod during its visit of the method's code).- 参数:
insn- an instruction index.successor- index of a successor instruction.- 返回:
- true if this edge must be considered in the data flow analysis performed by this analyzer, or false otherwise. The default implementation of this method always returns true.
-
newControlFlowExceptionEdge
Creates a control flow graph edge corresponding to an exception handler. The default implementation of this method delegates tonewControlFlowExceptionEdge(int, int). It can be overridden in order to construct the control flow graph of a method (this method is called by theanalyzemethod during its visit of the method's code).- 参数:
insn- an instruction index.tcb- TryCatchBlockNode corresponding to this edge.- 返回:
- true if this edge must be considered in the data flow analysis
performed by this analyzer, or false otherwise. The default
implementation of this method delegates to
newControlFlowExceptionEdge(int, int).
-