public class SimpleVerifier extends BasicVerifier
BasicVerifier that performs more precise verifications.
This verifier computes exact class types, instead of using a single "object
reference" type (as done in the BasicVerifier).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| 构造器和说明 |
|---|
SimpleVerifier()
Constructs a new
SimpleVerifier. |
SimpleVerifier(Type currentClass,
Type currentSuperClass,
boolean isInterface)
Constructs a new
SimpleVerifier to verify a specific class. |
SimpleVerifier(Type currentClass,
Type currentSuperClass,
List currentClassInterfaces,
boolean isInterface)
Constructs a new
SimpleVerifier to verify a specific class. |
| 限定符和类型 | 方法和说明 |
|---|---|
protected Class |
getClass(Type t) |
protected Value |
getElementValue(Value objectArrayValue) |
protected Type |
getSuperClass(Type t) |
protected boolean |
isArrayValue(Value value) |
protected boolean |
isAssignableFrom(Type t,
Type u) |
protected boolean |
isInterface(Type t) |
protected boolean |
isSubTypeOf(Value value,
Value expected) |
Value |
merge(Value v,
Value w)
Merges two values.
|
Value |
newValue(Type type)
Creates a new value that represents the given type.
|
binaryOperation, copyOperation, naryOperation, ternaryOperation, unaryOperationnewOperationpublic SimpleVerifier()
SimpleVerifier.public SimpleVerifier(Type currentClass, Type currentSuperClass, boolean isInterface)
SimpleVerifier to verify a specific class. This
class will not be loaded into the JVM since it may be incorrect.currentClass - the class that is verified.currentSuperClass - the super class of the class that is verified.isInterface - if the class that is verified is an interface.public SimpleVerifier(Type currentClass, Type currentSuperClass, List currentClassInterfaces, boolean isInterface)
SimpleVerifier to verify a specific class. This
class will not be loaded into the JVM since it may be incorrect.currentClass - the class that is verified.currentSuperClass - the super class of the class that is verified.currentClassInterfaces - the interfaces implemented by the class
that is verified.isInterface - if the class that is verified is an interface.public Value newValue(Type type)
Interpreterthis),
exception handler variable and with null type
for variables reserved by long and double types.newValue 在接口中 InterpreternewValue 在类中 BasicInterpretertype - a primitive or reference type, or null to
represent an uninitialized value.protected boolean isArrayValue(Value value)
isArrayValue 在类中 BasicVerifierprotected Value getElementValue(Value objectArrayValue) throws AnalyzerException
getElementValue 在类中 BasicVerifierAnalyzerExceptionprotected boolean isSubTypeOf(Value value, Value expected)
isSubTypeOf 在类中 BasicVerifierpublic Value merge(Value v, Value w)
Interpretermerge 在接口中 Interpretermerge 在类中 BasicInterpreterv - a value.w - another value.protected boolean isInterface(Type t)
Copyright © 2017. All Rights Reserved.