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).apiAALOAD, 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| Modifier | Constructor and Description | 
|---|---|
|   | SimpleVerifier()Constructs a new  SimpleVerifier. | 
| protected  | SimpleVerifier(int api,
              Type currentClass,
              Type currentSuperClass,
              List<Type> currentClassInterfaces,
              boolean isInterface) | 
|   | SimpleVerifier(Type currentClass,
              Type currentSuperClass,
              boolean isInterface)Constructs a new  SimpleVerifierto verify a specific class. | 
|   | SimpleVerifier(Type currentClass,
              Type currentSuperClass,
              List<Type> currentClassInterfaces,
              boolean isInterface)Constructs a new  SimpleVerifierto verify a specific class. | 
| Modifier and Type | Method and Description | 
|---|---|
| protected Class<?> | getClass(Type t) | 
| protected BasicValue | getElementValue(BasicValue objectArrayValue) | 
| protected Type | getSuperClass(Type t) | 
| protected boolean | isArrayValue(BasicValue value) | 
| protected boolean | isAssignableFrom(Type t,
                Type u) | 
| protected boolean | isInterface(Type t) | 
| protected boolean | isSubTypeOf(BasicValue value,
           BasicValue expected) | 
| BasicValue | merge(BasicValue v,
     BasicValue w)Merges two values. | 
| BasicValue | newValue(Type type)Creates a new value that represents the given type. | 
| void | setClassLoader(ClassLoader loader)Set the  ClassLoaderwhich will be used to load referenced
 classes. | 
binaryOperation, copyOperation, naryOperation, returnOperation, 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<Type> 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 void setClassLoader(ClassLoader loader)
ClassLoader which will be used to load referenced
 classes. This is useful if you are verifying multiple interdependent
 classes.loader - a ClassLoader to usepublic BasicValue newValue(Type type)
Interpreterthis), exception
 handler variable and with null type for variables reserved
 by long and double types.newValue in class BasicInterpretertype - a primitive or reference type, or null to represent
            an uninitialized value.protected boolean isArrayValue(BasicValue value)
isArrayValue in class BasicVerifierprotected BasicValue getElementValue(BasicValue objectArrayValue) throws AnalyzerException
getElementValue in class BasicVerifierAnalyzerExceptionprotected boolean isSubTypeOf(BasicValue value, BasicValue expected)
isSubTypeOf in class BasicVerifierpublic BasicValue merge(BasicValue v, BasicValue w)
Interpretermerge in class BasicInterpreterv - a value.w - another value.protected boolean isInterface(Type t)