diff --git a/src/main/java/br/usp/each/saeg/asm/defuse/DefUseFrame.java b/src/main/java/br/usp/each/saeg/asm/defuse/DefUseFrame.java index e30b146..ce47214 100644 --- a/src/main/java/br/usp/each/saeg/asm/defuse/DefUseFrame.java +++ b/src/main/java/br/usp/each/saeg/asm/defuse/DefUseFrame.java @@ -326,7 +326,7 @@ public void execute(final AbstractInsnNode insn, final Interpreter interp case Opcodes.INVOKEINTERFACE: { values = new ArrayList(); final String desc = ((MethodInsnNode) insn).desc; - for (int i = Type.getArgumentTypes(desc).length; i > 0; --i) { + for (int i = Type.getArgumentCount(desc); i > 0; --i) { values.add(0, pop()); } if (insn.getOpcode() != Opcodes.INVOKESTATIC) { @@ -342,7 +342,7 @@ public void execute(final AbstractInsnNode insn, final Interpreter interp case Opcodes.INVOKEDYNAMIC: { values = new ArrayList(); final String desc = ((InvokeDynamicInsnNode) insn).desc; - for (int i = Type.getArgumentTypes(desc).length; i > 0; --i) { + for (int i = Type.getArgumentCount(desc); i > 0; --i) { values.add(0, pop()); } if (Type.getReturnType(desc) == Type.VOID_TYPE) {