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_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, 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| 限定符 | 构造器和说明 |
|---|---|
|
SimpleVerifier()
Constructs a new
SimpleVerifier. |
protected |
SimpleVerifier(int api,
Type currentClass,
Type currentSuperClass,
java.util.List<Type> currentClassInterfaces,
boolean isInterface) |
|
SimpleVerifier(Type currentClass,
Type currentSuperClass,
boolean isInterface)
Constructs a new
SimpleVerifier to verify a specific class. |
|
SimpleVerifier(Type currentClass,
Type currentSuperClass,
java.util.List<Type> currentClassInterfaces,
boolean isInterface)
Constructs a new
SimpleVerifier to verify a specific class. |
| 限定符和类型 | 方法和说明 |
|---|---|
protected java.lang.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(java.lang.ClassLoader loader)
Set the
ClassLoader which 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, java.util.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(java.lang.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 在类中 BasicInterpretertype - a primitive or reference type, or null to represent an uninitialized
value.protected boolean isArrayValue(BasicValue value)
isArrayValue 在类中 BasicVerifierprotected BasicValue getElementValue(BasicValue objectArrayValue) throws AnalyzerException
getElementValue 在类中 BasicVerifierAnalyzerExceptionprotected boolean isSubTypeOf(BasicValue value, BasicValue expected)
isSubTypeOf 在类中 BasicVerifierpublic BasicValue merge(BasicValue v, BasicValue w)
Interpretermerge 在类中 BasicInterpreterv - a value.w - another value.protected boolean isInterface(Type t)
protected java.lang.Class<?> getClass(Type t)