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, unaryOperation
newOperation
public Value newValue(Type type)
Interpreter
newValue
in interface Interpreter
newValue
in class BasicInterpreter
type
- a primitive or reference type, or null to represent an
uninitialized value.protected boolean isArrayValue(Value value)
isArrayValue
in class BasicVerifier
protected Value getElementValue(Value objectArrayValue) throws AnalyzerException
getElementValue
in class BasicVerifier
AnalyzerException
protected boolean isSubTypeOf(Value value, Value expected)
isSubTypeOf
in class BasicVerifier
public Value merge(Value v, Value w)
Interpreter
merge
in interface Interpreter
merge
in class BasicInterpreter
v
- a value.w
- another value.protected java.lang.Class getClass(Type t)