Lines Matching defs:nargs

901     private static MethodHandle findCollector(String name, int nargs, Class<?> rtype, Class<?>... ptypes) {
902 MethodType type = MethodType.genericMethodType(nargs)
1024 public static MethodHandle varargsArray(int nargs) {
1025 MethodHandle mh = ARRAYS[nargs];
1027 mh = findCollector("array", nargs, Object[].class);
1028 if (mh != null) return ARRAYS[nargs] = mh;
1029 mh = buildVarargsArray(FILL_NEW_ARRAY, ARRAY_IDENTITY, nargs);
1030 assert(assertCorrectArity(mh, nargs));
1031 return ARRAYS[nargs] = mh;
1039 private static MethodHandle buildVarargsArray(MethodHandle newArray, MethodHandle finisher, int nargs) {
1043 int leftLen = Math.min(nargs, LEFT_ARGS); // absorb some arguments immediately
1044 int rightLen = nargs - leftLen;
1045 MethodHandle leftCollector = newArray.bindTo(nargs);
1068 private static MethodHandle fillToRight(int nargs) {
1069 MethodHandle filler = FILL_ARRAY_TO_RIGHT[nargs];
1071 filler = buildFiller(nargs);
1072 assert(assertCorrectArity(filler, nargs - LEFT_ARGS + 1));
1073 return FILL_ARRAY_TO_RIGHT[nargs] = filler;
1075 private static MethodHandle buildFiller(int nargs) {
1076 if (nargs <= LEFT_ARGS)
1078 // we need room for both mh and a in mh.invoke(a, arg*[nargs])
1080 int rightLen = nargs % CHUNK;
1081 int midLen = nargs - rightLen;
1083 midLen = nargs - (rightLen = CHUNK);
1090 if (midLen < LEFT_ARGS) rightLen = nargs - (midLen = LEFT_ARGS);
1093 MethodHandle rightFill = FILL_ARRAYS[rightLen].bindTo(midLen); // [midLen..nargs-1]
1122 public static MethodHandle varargsArray(Class<?> arrayType, int nargs) {
1126 if (nargs >= MAX_JVM_ARITY/2 - 1) {
1127 int slots = nargs;
1132 throw new IllegalArgumentException("too many arguments: "+arrayType.getSimpleName()+", length "+nargs);
1135 return varargsArray(nargs);
1138 MethodHandle mh = nargs < cache.length ? cache[nargs] : null;
1143 mh = buildVarargsArray(builder, producer, nargs);
1150 mh = buildVarargsArray(builder, producer, nargs);
1152 mh = mh.asType(MethodType.methodType(arrayType, Collections.<Class<?>>nCopies(nargs, elemType)));
1153 assert(assertCorrectArity(mh, nargs));
1154 if (nargs < cache.length)
1155 cache[nargs] = mh;
1215 public static MethodHandle varargsList(int nargs) {
1216 MethodHandle mh = LISTS[nargs];
1218 mh = findCollector("list", nargs, List.class);
1219 if (mh != null) return LISTS[nargs] = mh;
1220 return LISTS[nargs] = buildVarargsList(nargs);
1222 private static MethodHandle buildVarargsList(int nargs) {
1223 return MethodHandles.filterReturnValue(varargsArray(nargs), LazyStatics.MAKE_LIST);