org.objectweb.asm.tree.analysis

Class BasicVerifier

Implemented Interfaces:
Constants, Interpreter
Known Direct Subclasses:
SimpleVerifier

public class BasicVerifier
extends BasicInterpreter

An extended BasicInterpreter that checks that bytecode instructions are correctly used.
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

Value
binaryOperation(AbstractInsnNode insn, Value value1, Value value2)
Value
copyOperation(AbstractInsnNode insn, Value value)
protected Value
getElementValue(Value objectArrayValue)
protected boolean
isArrayValue(Value value)
protected boolean
isSubTypeOf(Value value, Value expected)
Value
naryOperation(AbstractInsnNode insn, List values)
Value
ternaryOperation(AbstractInsnNode insn, Value value1, Value value2, Value value3)
Value
unaryOperation(AbstractInsnNode insn, Value value)

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

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

Method Details

binaryOperation

public Value binaryOperation(AbstractInsnNode insn,
                             Value value1,
                             Value value2)
            throws AnalyzerException
Specified by:
binaryOperation in interface Interpreter
Overrides:
binaryOperation in interface BasicInterpreter

copyOperation

public Value copyOperation(AbstractInsnNode insn,
                           Value value)
            throws AnalyzerException
Specified by:
copyOperation in interface Interpreter
Overrides:
copyOperation in interface BasicInterpreter

getElementValue

protected Value getElementValue(Value objectArrayValue)
            throws AnalyzerException

isArrayValue

protected boolean isArrayValue(Value value)

isSubTypeOf

protected boolean isSubTypeOf(Value value,
                              Value expected)

naryOperation

public Value naryOperation(AbstractInsnNode insn,
                           List values)
            throws AnalyzerException
Specified by:
naryOperation in interface Interpreter
Overrides:
naryOperation in interface BasicInterpreter

ternaryOperation

public Value ternaryOperation(AbstractInsnNode insn,
                              Value value1,
                              Value value2,
                              Value value3)
            throws AnalyzerException
Specified by:
ternaryOperation in interface Interpreter
Overrides:
ternaryOperation in interface BasicInterpreter

unaryOperation

public Value unaryOperation(AbstractInsnNode insn,
                            Value value)
            throws AnalyzerException
Specified by:
unaryOperation in interface Interpreter
Overrides:
unaryOperation in interface BasicInterpreter