org.objectweb.asm.tree.analysis
类 BasicVerifier

java.lang.Object
  继承者 org.objectweb.asm.tree.analysis.BasicInterpreter
      继承者 org.objectweb.asm.tree.analysis.BasicVerifier
所有已实现的接口:
Opcodes, Interpreter
直接已知子类:
SimpleVerifier

public class BasicVerifier
extends BasicInterpreter

An extended BasicInterpreter that checks that bytecode instructions are correctly used.

作者:
Eric Bruneton, Bing Ran

字段摘要
 
从接口 org.objectweb.asm.Opcodes 继承的字段
AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, 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, 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, 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, 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
 
构造方法摘要
BasicVerifier()
           
 
方法摘要
 Value binaryOperation(AbstractInsnNode insn, Value value1, Value value2)
          Interprets a bytecode instruction with two arguments.
 Value copyOperation(AbstractInsnNode insn, Value value)
          Interprets a bytecode instruction that moves a value on the stack or to or from local variables.
protected  Value getElementValue(Value objectArrayValue)
           
protected  boolean isArrayValue(Value value)
           
protected  boolean isSubTypeOf(Value value, Value expected)
           
 Value naryOperation(AbstractInsnNode insn, List values)
          Interprets a bytecode instruction with a variable number of arguments.
 Value ternaryOperation(AbstractInsnNode insn, Value value1, Value value2, Value value3)
          Interprets a bytecode instruction with three arguments.
 Value unaryOperation(AbstractInsnNode insn, Value value)
          Interprets a bytecode instruction with a single argument.
 
从类 org.objectweb.asm.tree.analysis.BasicInterpreter 继承的方法
merge, newOperation, newValue
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

BasicVerifier

public BasicVerifier()
方法详细信息

copyOperation

public Value copyOperation(AbstractInsnNode insn,
                           Value value)
                    throws AnalyzerException
从接口 Interpreter 复制的描述
Interprets a bytecode instruction that moves a value on the stack or to or from local variables. This method is called for the following opcodes: ILOAD, LLOAD, FLOAD, DLOAD, ALOAD, ISTORE, LSTORE, FSTORE, DSTORE, ASTORE, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, SWAP

指定者:
接口 Interpreter 中的 copyOperation
覆盖:
BasicInterpreter 中的 copyOperation
参数:
insn - the bytecode instruction to be interpreted.
value - the value that must be moved by the instruction.
返回:
the result of the interpretation of the given instruction. The returned value must be equal to the given value.
抛出:
AnalyzerException - if an error occured during the interpretation.

unaryOperation

public Value unaryOperation(AbstractInsnNode insn,
                            Value value)
                     throws AnalyzerException
从接口 Interpreter 复制的描述
Interprets a bytecode instruction with a single argument. This method is called for the following opcodes: INEG, LNEG, FNEG, DNEG, IINC, I2L, I2F, I2D, L2I, L2F, L2D, F2I, F2L, F2D, D2I, D2L, D2F, I2B, I2C, I2S, IFEQ, IFNE, IFLT, IFGE, IFGT, IFLE, TABLESWITCH, LOOKUPSWITCH, IRETURN, LRETURN, FRETURN, DRETURN, ARETURN, PUTSTATIC, GETFIELD, NEWARRAY, ANEWARRAY, ARRAYLENGTH, ATHROW, CHECKCAST, INSTANCEOF, MONITORENTER, MONITOREXIT, IFNULL, IFNONNULL

指定者:
接口 Interpreter 中的 unaryOperation
覆盖:
BasicInterpreter 中的 unaryOperation
参数:
insn - the bytecode instruction to be interpreted.
value - the argument of the instruction to be interpreted.
返回:
the result of the interpretation of the given instruction.
抛出:
AnalyzerException - if an error occured during the interpretation.

binaryOperation

public Value binaryOperation(AbstractInsnNode insn,
                             Value value1,
                             Value value2)
                      throws AnalyzerException
从接口 Interpreter 复制的描述
Interprets a bytecode instruction with two arguments. This method is called for the following opcodes: IALOAD, LALOAD, FALOAD, DALOAD, AALOAD, BALOAD, CALOAD, SALOAD, IADD, LADD, FADD, DADD, ISUB, LSUB, FSUB, DSUB, IMUL, LMUL, FMUL, DMUL, IDIV, LDIV, FDIV, DDIV, IREM, LREM, FREM, DREM, ISHL, LSHL, ISHR, LSHR, IUSHR, LUSHR, IAND, LAND, IOR, LOR, IXOR, LXOR, LCMP, FCMPL, FCMPG, DCMPL, DCMPG, IF_ICMPEQ, IF_ICMPNE, IF_ICMPLT, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ACMPEQ, IF_ACMPNE, PUTFIELD

指定者:
接口 Interpreter 中的 binaryOperation
覆盖:
BasicInterpreter 中的 binaryOperation
参数:
insn - the bytecode instruction to be interpreted.
value1 - the first argument of the instruction to be interpreted.
value2 - the second argument of the instruction to be interpreted.
返回:
the result of the interpretation of the given instruction.
抛出:
AnalyzerException - if an error occured during the interpretation.

ternaryOperation

public Value ternaryOperation(AbstractInsnNode insn,
                              Value value1,
                              Value value2,
                              Value value3)
                       throws AnalyzerException
从接口 Interpreter 复制的描述
Interprets a bytecode instruction with three arguments. This method is called for the following opcodes: IASTORE, LASTORE, FASTORE, DASTORE, AASTORE, BASTORE, CASTORE, SASTORE

指定者:
接口 Interpreter 中的 ternaryOperation
覆盖:
BasicInterpreter 中的 ternaryOperation
参数:
insn - the bytecode instruction to be interpreted.
value1 - the first argument of the instruction to be interpreted.
value2 - the second argument of the instruction to be interpreted.
value3 - the third argument of the instruction to be interpreted.
返回:
the result of the interpretation of the given instruction.
抛出:
AnalyzerException - if an error occured during the interpretation.

naryOperation

public Value naryOperation(AbstractInsnNode insn,
                           List values)
                    throws AnalyzerException
从接口 Interpreter 复制的描述
Interprets a bytecode instruction with a variable number of arguments. This method is called for the following opcodes: INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC, INVOKEINTERFACE, MULTIANEWARRAY

指定者:
接口 Interpreter 中的 naryOperation
覆盖:
BasicInterpreter 中的 naryOperation
参数:
insn - the bytecode instruction to be interpreted.
values - the arguments of the instruction to be interpreted.
返回:
the result of the interpretation of the given instruction.
抛出:
AnalyzerException - if an error occured during the interpretation.

isArrayValue

protected boolean isArrayValue(Value value)

getElementValue

protected Value getElementValue(Value objectArrayValue)
                         throws AnalyzerException
抛出:
AnalyzerException

isSubTypeOf

protected boolean isSubTypeOf(Value value,
                              Value expected)


Copyright © 2013. All Rights Reserved.