Interpreter for SourceValue values.
| Access | Constructor and Description |
|---|---|
| public | |
| protected | SourceInterpreter(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 SourceValue | binaryOperation(final AbstractInsnNode
the bytecode instruction to be interpreted. insn, final SourceValue the first argument of the instruction to be interpreted. value1, final SourceValue the second argument of the instruction to be interpreted. value2)Implements abstract org. |
| private static <E> boolean | |
| public SourceValue | copyOperation(final AbstractInsnNode
the bytecode instruction to be interpreted. insn, final SourceValue the value that must be moved by the instruction. value)Implements abstract org. |
| public SourceValue | merge(final SourceValue
a value. value1, final SourceValue another value. value2)Implements abstract org. |
| public SourceValue | naryOperation(final AbstractInsnNode
the bytecode instruction to be interpreted. insn, final List<? extends SourceValue> the arguments of the instruction to be interpreted. values)Implements abstract org. |
| public SourceValue | newOperation(final AbstractInsnNode
the bytecode instruction to be interpreted. insn)Implements abstract org. |
| public SourceValue | 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 SourceValue the argument of the instruction to be interpreted. value, final SourceValue the expected return type of the analyzed method. expected)Implements abstract org. |
| public SourceValue | ternaryOperation(final AbstractInsnNode
the bytecode instruction to be interpreted. insn, final SourceValue the first argument of the instruction to be interpreted. value1, final SourceValue the second argument of the instruction to be interpreted. value2, final SourceValue the third argument of the instruction to be interpreted. value3)Implements abstract org. |
| public SourceValue | unaryOperation(final AbstractInsnNode
the bytecode instruction to be interpreted. insn, final SourceValue the argument of the instruction to be interpreted. value)Implements abstract org. |
| SourceInterpreter | back to summary |
|---|---|
| public SourceInterpreter() Constructs a new | |
| SourceInterpreter | back to summary |
|---|---|
| protected SourceInterpreter(final int api) Constructs a new
| |
| binaryOperation | back to summary |
|---|---|
| public SourceValue binaryOperation(final AbstractInsnNode insn, final SourceValue value1, final SourceValue value2) 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
| |
| containsAll | back to summary |
|---|---|
| private static <E> boolean containsAll(final Set<E> self, final Set<E> other) | |
| copyOperation | back to summary |
|---|---|
| public SourceValue copyOperation(final AbstractInsnNode insn, final SourceValue value) 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 SourceValue merge(final SourceValue value1, final SourceValue 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 SourceValue naryOperation(final AbstractInsnNode insn, final List<? extends SourceValue> values) 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 SourceValue newOperation(final AbstractInsnNode insn) 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 SourceValue 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 SourceValue value, final SourceValue expected) 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 SourceValue ternaryOperation(final AbstractInsnNode insn, final SourceValue value1, final SourceValue value2, final SourceValue value3) 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 SourceValue unaryOperation(final AbstractInsnNode insn, final SourceValue value) 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
| |