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, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, 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, 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, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, 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, V1_1, V1_2, V1_3, V1_4, V1_5| Constructor and Description |
|---|
SimpleVerifier() |
| Modifier and Type | Method and Description |
|---|---|
protected java.lang.Class |
getClass(Type t) |
protected Value |
getElementValue(Value objectArrayValue) |
protected boolean |
isArrayValue(Value value) |
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 Value newValue(Type type)
InterpreternewValue in interface InterpreternewValue in class BasicInterpretertype - a primitive or reference type, or null to represent an
uninitialized value.protected boolean isArrayValue(Value value)
isArrayValue in class BasicVerifierprotected Value getElementValue(Value objectArrayValue) throws AnalyzerException
getElementValue in class BasicVerifierAnalyzerExceptionprotected boolean isSubTypeOf(Value value, Value expected)
isSubTypeOf in class BasicVerifierpublic Value merge(Value v, Value w)
Interpretermerge in interface Interpretermerge in class BasicInterpreterv - a value.w - another value.protected java.lang.Class getClass(Type t)