/** * processes a method call looking for parameters that are arrays. If this array was seen earlier as a simple wrapping array, then it marks it as being * having been used as a parameter. * */ private void processMethodCall() { if ("invoke".equals(getNameConstantOperand()) && "java/lang/reflect/Method".equals(getClassConstantOperand())) { return; } String sig = getSigConstantOperand(); List<String> args = SignatureUtils.getParameterSignatures(sig); if (stack.getStackDepth() >= args.size()) { for (int i = 0; i < args.size(); i++) { String argSig = args.get(i); if (argSig.startsWith(Values.SIG_ARRAY_PREFIX)) { OpcodeStack.Item itm = stack.getStackItem(args.size() - i - 1); int arrayReg = itm.getRegisterNumber(); WrapperInfo wi = wrappers.get(Integer.valueOf(arrayReg)); if (wi != null) { wi.wasArg = true; } } } } }
/** * processes a method call looking for parameters that are arrays. If this array was seen earlier as a simple wrapping array, then it marks it as being * having been used as a parameter. * */ private void processMethodCall() { if ("invoke".equals(getNameConstantOperand()) && "java/lang/reflect/Method".equals(getClassConstantOperand())) { return; } String sig = getSigConstantOperand(); List<String> args = SignatureUtils.getParameterSignatures(sig); if (stack.getStackDepth() >= args.size()) { for (int i = 0; i < args.size(); i++) { String argSig = args.get(i); if (argSig.startsWith(Values.SIG_ARRAY_PREFIX)) { OpcodeStack.Item itm = stack.getStackItem(args.size() - i - 1); int arrayReg = itm.getRegisterNumber(); WrapperInfo wi = wrappers.get(Integer.valueOf(arrayReg)); if (wi != null) { wi.wasArg = true; } } } } }