Lines Matching refs:combiner
2037 * The pre-processing is performed by {@code combiner}, a second method handle.
2039 * are copied to the combiner, which is then called.
2040 * (Here, {@code N} is defined as the parameter count of the combiner.)
2042 * from the combiner inserted before the original {@code N} incoming
2045 * If the combiner returns a value, the first parameter type of the target
2046 * must be identical with the return type of the combiner, and the next
2048 * of the combiner.
2050 * If the combiner has a void return, no result will be inserted,
2052 * must exactly match the parameters of the combiner.
2056 * if it corresponds to the result of the combiner.
2059 * that either the combiner or the target does not wish to receive.
2060 * If some of the incoming arguments are destined only for the combiner,
2083 * V combiner(A...);
2085 * V v = combiner(a...);
2088 * // and if the combiner has a void return:
2097 * @param combiner method handle to call initially on the incoming arguments
2100 * @throws IllegalArgumentException if {@code combiner}'s return type
2104 * (skipping one matching the {@code combiner}'s return type)
2105 * are not identical with the argument types of {@code combiner}
2108 MethodHandle foldArguments(MethodHandle target, MethodHandle combiner) {
2111 MethodType combinerType = combiner.type();
2124 throw misMatchedTypes("target and combiner types", targetType, combinerType);
2126 return MethodHandleImpl.makeCollectArguments(target, combiner, foldPos, true);