org.objectweb.asm.tree.analysis

Class SimpleVerifier

Implemented Interfaces:
Constants, Interpreter

public class SimpleVerifier
extends BasicVerifier

An extended 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).
Authors:
Eric Bruneton
Bing Ran

Fields inherited from interface org.objectweb.asm.Constants

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, DUP2, DUP2_X1, DUP2_X2, DUP_X1, DUP_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, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, 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, TABLESWITCH, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, V1_1, V1_2, V1_3, V1_4, V1_5

Method Summary

protected 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)
Value
newValue(Type type)

Methods inherited from class org.objectweb.asm.tree.analysis.BasicVerifier

binaryOperation, copyOperation, getElementValue, isArrayValue, isSubTypeOf, naryOperation, ternaryOperation, unaryOperation

Methods inherited from class org.objectweb.asm.tree.analysis.BasicInterpreter

binaryOperation, copyOperation, merge, naryOperation, newOperation, newValue, ternaryOperation, unaryOperation

Method Details

getClass

protected Class getClass(Type t)

getElementValue

protected Value getElementValue(Value objectArrayValue)
            throws AnalyzerException
Overrides:
getElementValue in interface BasicVerifier

isArrayValue

protected boolean isArrayValue(Value value)
Overrides:
isArrayValue in interface BasicVerifier

isSubTypeOf

protected boolean isSubTypeOf(Value value,
                              Value expected)
Overrides:
isSubTypeOf in interface BasicVerifier

merge

public Value merge(Value v,
                   Value w)
Specified by:
merge in interface Interpreter
Overrides:
merge in interface BasicInterpreter

newValue

public Value newValue(Type type)
Specified by:
newValue in interface Interpreter
Overrides:
newValue in interface BasicInterpreter