MCPcopy Create free account
hub / github.com/GraxCode/zelixkiller / doMath

Method doMath

src/me/lpk/analysis/StackHelper.java:176–302  ·  view source on GitHub ↗
(AbstractInsnNode insn, InsnValue value1, InsnValue value2)

Source from the content-addressed store, hash-verified

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()) {

Callers 1

executeMethod · 0.80

Calls 5

intValueMethod · 0.95
longValueMethod · 0.95
floatValueMethod · 0.95
doubleValueMethod · 0.95
getValueMethod · 0.45

Tested by

no test coverage detected