Interpreter for BasicValue values.
| Modifier and Type | Field and Description |
|---|---|
| public static final Type | NULL_TYPE
Special type used for the null literal. |
| Access | Constructor and Description |
|---|---|
| public | |
| protected | BasicInterpreter(final int
the ASM API version supported by this interpreter. Must be one of the api)ASMx values in Opcodes.Constructs a new |
| Modifier and Type | Method and Description |
|---|---|
| public BasicValue | binaryOperation(final AbstractInsnNode
the bytecode instruction to be interpreted. insn, final BasicValue the first argument of the instruction to be interpreted. value1, final BasicValue the second argument of the instruction to be interpreted. value2)Implements abstract org. |
| public BasicValue | copyOperation(final AbstractInsnNode
the bytecode instruction to be interpreted. insn, final BasicValue the value that must be moved by the instruction. value)Implements abstract org. |
| public BasicValue | merge(final BasicValue
a value. value1, final BasicValue another value. value2)Implements abstract org. |
| public BasicValue | naryOperation(final AbstractInsnNode
the bytecode instruction to be interpreted. insn, final List<? extends BasicValue> the arguments of the instruction to be interpreted. values)Implements abstract org. |
| public BasicValue | newOperation(final AbstractInsnNode
the bytecode instruction to be interpreted. insn)Implements abstract org. |
| public BasicValue | newValue(final Type
a primitive or reference type, or null to represent an uninitialized
value. type)Implements abstract org. |
| public void | returnOperation(final AbstractInsnNode
the bytecode instruction to be interpreted. insn, final BasicValue the argument of the instruction to be interpreted. value, final BasicValue the expected return type of the analyzed method. expected)Implements abstract org. |
| public BasicValue | ternaryOperation(final AbstractInsnNode
the bytecode instruction to be interpreted. insn, final BasicValue the first argument of the instruction to be interpreted. value1, final BasicValue the second argument of the instruction to be interpreted. value2, final BasicValue the third argument of the instruction to be interpreted. value3)Implements abstract org. |
| public BasicValue | unaryOperation(final AbstractInsnNode
the bytecode instruction to be interpreted. insn, final BasicValue the argument of the instruction to be interpreted. value)Implements abstract org. |
| NULL_TYPE | back to summary |
|---|---|
| public static final Type NULL_TYPE Special type used for the null literal. This is an object reference type with descriptor 'Lnull;'. | |
| BasicInterpreter | back to summary |
|---|---|
| public BasicInterpreter() Constructs a new | |
| BasicInterpreter | back to summary |
|---|---|
| protected BasicInterpreter(final int api) Constructs a new
| |
| binaryOperation | back to summary |
|---|---|
| public BasicValue binaryOperation(final AbstractInsnNode insn, final BasicValue value1, final BasicValue value2) throws AnalyzerException Implements abstract org. Doc from org. 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
| |
| copyOperation | back to summary |
|---|---|
| public BasicValue copyOperation(final AbstractInsnNode insn, final BasicValue value) throws AnalyzerException Implements abstract org. Doc from org. 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
| |
| merge | back to summary |
|---|---|
| public BasicValue merge(final BasicValue value1, final BasicValue value2) Implements abstract org. Doc from org. Merges two values. The merge operation must return a value that represents both values (for instance, if the two values are two types, the merged value must be a common super type of the two types. If the two values are integer intervals, the merged value must be an interval that contains the previous ones. Likewise for other types of values).
| |
| naryOperation | back to summary |
|---|---|
| public BasicValue naryOperation(final AbstractInsnNode insn, final List<? extends BasicValue> values) throws AnalyzerException Implements abstract org. Doc from org. Interprets a bytecode instruction with a variable number of arguments. This method is called for the following opcodes: INVOKEVIRTUAL, INVOKESPECIAL, INVOKESTATIC, INVOKEINTERFACE, MULTIANEWARRAY and INVOKEDYNAMIC
| |
| newOperation | back to summary |
|---|---|
| public BasicValue newOperation(final AbstractInsnNode insn) throws AnalyzerException Implements abstract org. Doc from org. Interprets a bytecode instruction without arguments. This method is called for the following opcodes: ACONST_NULL, ICONST_M1, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, LCONST_0, LCONST_1, FCONST_0, FCONST_1, FCONST_2, DCONST_0, DCONST_1, BIPUSH, SIPUSH, LDC, JSR, GETSTATIC, NEW
| |
| newValue | back to summary |
|---|---|
| public BasicValue newValue(final Type type) Implements abstract org. Doc from org. Creates a new value that represents the given type. Called for method parameters (including An interpreter may choose to implement one or more of
| |
| returnOperation | back to summary |
|---|---|
| public void returnOperation(final AbstractInsnNode insn, final BasicValue value, final BasicValue expected) throws AnalyzerException Implements abstract org. Doc from org. Interprets a bytecode return instruction. This method is called for the following opcodes: IRETURN, LRETURN, FRETURN, DRETURN, ARETURN
| |
| ternaryOperation | back to summary |
|---|---|
| public BasicValue ternaryOperation(final AbstractInsnNode insn, final BasicValue value1, final BasicValue value2, final BasicValue value3) throws AnalyzerException Implements abstract org. Doc from org. Interprets a bytecode instruction with three arguments. This method is called for the following opcodes: IASTORE, LASTORE, FASTORE, DASTORE, AASTORE, BASTORE, CASTORE, SASTORE
| |
| unaryOperation | back to summary |
|---|---|
| public BasicValue unaryOperation(final AbstractInsnNode insn, final BasicValue value) throws AnalyzerException Implements abstract org. Doc from org. 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
| |