org.objectweb.asm.tree.analysis
Class BasicVerifier

java.lang.Object
  extended byorg.objectweb.asm.tree.analysis.BasicInterpreter
      extended byorg.objectweb.asm.tree.analysis.BasicVerifier
All Implemented Interfaces:
Constants, Interpreter

public class BasicVerifier
extends BasicInterpreter

An extended BasicInterpreter that checks that bytecode instructions are correctly used.

Author:
Eric Bruneton

Field Summary
 
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, 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
 
Constructor Summary
BasicVerifier()
           
 
Method Summary
 Value binaryOperation(AbstractInsnNode insn, Value value1, Value value2)
          Interprets a bytecode instruction with two arguments.
 Value copyOperation(AbstractInsnNode insn, Value value)
          Interprets a bytecode instruction that moves a value on the stack or to or from local variables.
 Value naryOperation(AbstractInsnNode insn, List values)
          Interprets a bytecode instruction with a variable number of arguments.
 Value ternaryOperation(AbstractInsnNode insn, Value value1, Value value2, Value value3)
          Interprets a bytecode instruction with three arguments.
 Value unaryOperation(AbstractInsnNode insn, Value value)
          Interprets a bytecode instruction with a single argument.
 
Methods inherited from class org.objectweb.asm.tree.analysis.BasicInterpreter
newOperation, newValue
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BasicVerifier

public BasicVerifier()
Method Detail

copyOperation

public Value copyOperation(AbstractInsnNode insn,
                           Value value)
Description copied from interface: Interpreter
Interprets a bytecode instruction that moves a value on the stack or to or from local variables. This method is called for the following opcodes: ILOAD, LLOAD, FLOAD, DLOAD, ALOAD, ISTORE, LSTORE, FSTORE, DSTORE, ASTORE, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, SWAP

Specified by:
copyOperation in interface Interpreter
Overrides:
copyOperation in class BasicInterpreter

unaryOperation

public Value unaryOperation(AbstractInsnNode insn,
                            Value value)
Description copied from interface: Interpreter
Interprets a bytecode instruction with a single argument. This method is called for the following opcodes: INEG, LNEG, FNEG, DNEG, IINC, I2L, I2F, I2D, L2I, L2F, L2D, F2I, F2L, F2D, D2I, D2L, D2F, I2B, I2C, I2S, IFEQ, IFNE, IFLT, IFGE, IFGT, IFLE, TABLESWITCH, LOOKUPSWITCH, IRETURN, LRETURN, FRETURN, DRETURN, ARETURN, PUTSTATIC, GETFIELD, NEWARRAY, ANEWARRAY, ARRAYLENGTH, ATHROW, CHECKCAST, INSTANCEOF, MONITORENTER, MONITOREXIT, IFNULL, IFNONNULL

Specified by:
unaryOperation in interface Interpreter
Overrides:
unaryOperation in class BasicInterpreter

binaryOperation

public Value binaryOperation(AbstractInsnNode insn,
                             Value value1,
                             Value value2)
Description copied from interface: Interpreter
Interprets a bytecode instruction with two arguments. This method is called for the following opcodes: IALOAD, LALOAD, FALOAD, DALOAD, AALOAD, BALOAD, CALOAD, SALOAD, IADD, LADD, FADD, DADD, ISUB, LSUB, FSUB, DSUB, IMUL, LMUL, FMUL, DMUL, IDIV, LDIV, FDIV, DDIV, IREM, LREM, FREM, DREM, ISHL, LSHL, ISHR, LSHR, IUSHR, LUSHR, IAND, LAND, IOR, LOR, IXOR, LXOR, LCMP, FCMPL, FCMPG, DCMPL, DCMPG, IF_ICMPEQ, IF_ICMPNE, IF_ICMPLT, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ACMPEQ, IF_ACMPNE, PUTFIELD

Specified by:
binaryOperation in interface Interpreter
Overrides:
binaryOperation in class BasicInterpreter

ternaryOperation

public Value ternaryOperation(AbstractInsnNode insn,
                              Value value1,
                              Value value2,
                              Value value3)
Description copied from interface: Interpreter
Interprets a bytecode instruction with three arguments. This method is called for the following opcodes: IASTORE, LASTORE, FASTORE, DASTORE, AASTORE, BASTORE, CASTORE, SASTORE

Specified by:
ternaryOperation in interface Interpreter
Overrides:
ternaryOperation in class BasicInterpreter

naryOperation

public Value naryOperation(AbstractInsnNode insn,
                           List values)
Description copied from interface: Interpreter
Interprets a bytecode instruction with a variable number of arguments. This method is called for the following opcodes: INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC, INVOKEINTERFACE, MULTIANEWARRAY

Specified by:
naryOperation in interface Interpreter
Overrides:
naryOperation in class BasicInterpreter