org.objectweb.asm.tree.analysis

Class SimpleVerifier

Implemented Interfaces:
Interpreter, Opcodes

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.Opcodes

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, V1_6

Constructor Summary

SimpleVerifier()
Constructs a new SimpleVerifier.
SimpleVerifier(Type currentClass, Type currentSuperClass, List currentClassInterfaces, boolean isInterface)
Constructs a new SimpleVerifier to verify a specific class.
SimpleVerifier(Type currentClass, Type currentSuperClass, boolean isInterface)
Constructs a new SimpleVerifier to verify a specific class.

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

Constructor Details

SimpleVerifier

public SimpleVerifier()

SimpleVerifier

public SimpleVerifier(Type currentClass,
                      Type currentSuperClass,
                      List currentClassInterfaces,
                      boolean isInterface)
Constructs a new SimpleVerifier to verify a specific class. This class will not be loaded into the JVM since it may be incorrect.
Parameters:
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.

SimpleVerifier

public SimpleVerifier(Type currentClass,
                      Type currentSuperClass,
                      boolean isInterface)
Constructs a new SimpleVerifier to verify a specific class. This class will not be loaded into the JVM since it may be incorrect.
Parameters:
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.

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