(ClassEnv env, String owner, String name, String desc, boolean itf, boolean isStatic, StateRecorder rec)
| 750 | } |
| 751 | |
| 752 | private static void handleMethodInvocation(ClassEnv env, String owner, String name, String desc, boolean itf, boolean isStatic, StateRecorder rec) { |
| 753 | MethodInstance target = env.getClsByName(owner).resolveMethod(name, desc, itf); |
| 754 | |
| 755 | for (int i = target.args.length - 1; i >= 0; i--) { |
| 756 | if (target.args[i].getType().getSlotSize() == 1) { |
| 757 | rec.pop(); |
| 758 | } else { |
| 759 | rec.popDouble(); |
| 760 | } |
| 761 | } |
| 762 | |
| 763 | if (!isStatic) rec.pop(); |
| 764 | |
| 765 | if (target.getRetType() != rec.common.VOID) { |
| 766 | rec.push(target.getRetType(), rec.getNextVarId(VarSource.MethodRet)); |
| 767 | } |
| 768 | } |
| 769 | |
| 770 | private static boolean queueTryCatchBlocks(MethodInstance method, StateRecorder rec, Queue<QueueElement> queue, Set<QueueElement> queued) { |
| 771 | if (method.getAsmNode().tryCatchBlocks.isEmpty()) return false; |
no test coverage detected