(AbstractInsnNode insn, InsnValue value1, InsnValue value2)
| 174 | } |
| 175 | |
| 176 | public InsnValue doMath(AbstractInsnNode insn, InsnValue value1, InsnValue value2) { |
| 177 | Object o1 = value1.getValue(), o2 = value2.getValue(); |
| 178 | switch (insn.getOpcode()) { |
| 179 | case Opcodes.IADD: |
| 180 | case Opcodes.ISUB: |
| 181 | case Opcodes.IMUL: |
| 182 | case Opcodes.IDIV: |
| 183 | case Opcodes.IREM: |
| 184 | case Opcodes.ISHL: |
| 185 | case Opcodes.ISHR: |
| 186 | case Opcodes.IUSHR: |
| 187 | case Opcodes.IAND: |
| 188 | case Opcodes.IOR: |
| 189 | case Opcodes.IXOR: |
| 190 | if (o1 == null || o2 == null) { |
| 191 | return InsnValue.INT_VALUE; |
| 192 | } |
| 193 | int i1 = ((Number) o1).intValue(), i2 = ((Number) o2).intValue(); |
| 194 | switch (insn.getOpcode()) { |
| 195 | case Opcodes.IADD: |
| 196 | return InsnValue.intValue(i1 + i2); |
| 197 | case Opcodes.ISUB: |
| 198 | return InsnValue.intValue(i1 - i2); |
| 199 | case Opcodes.IMUL: |
| 200 | return InsnValue.intValue(i1 * i2); |
| 201 | case Opcodes.IDIV: |
| 202 | return InsnValue.intValue(i1 / i2); |
| 203 | case Opcodes.IREM: |
| 204 | return InsnValue.intValue(i1 % i2); |
| 205 | case Opcodes.ISHL: |
| 206 | return InsnValue.intValue(i1 << i2); |
| 207 | case Opcodes.ISHR: |
| 208 | return InsnValue.intValue(i1 >> i2); |
| 209 | case Opcodes.IUSHR: |
| 210 | return InsnValue.intValue(i1 >>> i2); |
| 211 | case Opcodes.IAND: |
| 212 | return InsnValue.intValue(i1 & i2); |
| 213 | case Opcodes.IOR: |
| 214 | return InsnValue.intValue(i1 | i2); |
| 215 | case Opcodes.IXOR: |
| 216 | return InsnValue.intValue(i1 ^ i2); |
| 217 | } |
| 218 | case Opcodes.LADD: |
| 219 | case Opcodes.LSUB: |
| 220 | case Opcodes.LMUL: |
| 221 | case Opcodes.LDIV: |
| 222 | case Opcodes.LREM: |
| 223 | case Opcodes.LSHL: |
| 224 | case Opcodes.LSHR: |
| 225 | case Opcodes.LUSHR: |
| 226 | case Opcodes.LAND: |
| 227 | case Opcodes.LOR: |
| 228 | case Opcodes.LXOR: |
| 229 | if (o1 == null || o2 == null) { |
| 230 | return InsnValue.LONG_VALUE; |
| 231 | } |
| 232 | long l1 = ((Number) o1).longValue(), l2 = ((Number) o2).longValue(); |
| 233 | switch (insn.getOpcode()) { |
no test coverage detected