Lines Matching defs:perm

200     static MethodHandle findTestMH(String name, int[] perm) throws ReflectiveOperationException {
201 int arity = perm.length;
222 int[] perm = nullPerm(mt.parameterCount());
223 final int MARGIN = (perm.length <= 10 ? 2 : 0);
226 int maxStart = perm.length-1;
233 int end = perm.length - omit;
236 testPermutations(mh, perm, start, end, done);
243 reverse(perm, 0, perm.length);
245 switch (perm.length) {
254 static void testPermutations(MethodHandle mh, int[] perm, int start, int end, Set<String> done) throws Throwable {
257 testRotations(mh, perm, start, end, done);
259 reverse(perm, start, end);
267 int skips = (perm.length+3)/5;
269 rotate(perm, start, end);
272 testPermutations(mh, perm, start2, end2, done);
273 reverse(perm, start, end);
278 static void testRotations(MethodHandle mh, int[] perm, int start, int end, Set<String> done) throws Throwable {
281 if (done.add(Arrays.toString(perm)))
282 testOnePermutation(mh, perm, args);
283 rotate(perm, start, end);
287 static void testOnePermutation(MethodHandle mh, int[] perm, Object[] args) throws Throwable {
289 MethodType pmt = methodType(mt.returnType(), unpermuteArgs(perm, mt.parameterArray(), Class[].class));
291 System.out.println(Arrays.toString(perm));
295 Object res = permuteArguments(mh, pmt, perm).invokeWithArguments(unpermuteArgs(perm, args));
298 System.out.println(Arrays.toString(perm)+" "+str+" *** WRONG ***");
307 int[] perm = new int[s.length()];
312 perm[arity++] = Integer.parseInt(s.substring(0, k));
315 perm = Arrays.copyOf(perm, arity);
316 testOnePermutation(mhName, perm);
318 static void testOnePermutation(String mhName, int[] perm) throws Throwable {
319 MethodHandle mh = findTestMH(mhName, perm);
323 testOnePermutation(mh, perm, args);
342 int[] perm = new int[len];
344 perm[i] = i;
345 return perm;
347 static void rotate(int[] perm) {
348 rotate(perm, 0, perm.length);
350 static void rotate(int[] perm, int start, int end) {
351 int x = perm[end-1];
353 int y = perm[j]; perm[j] = x; x = y;
356 static void reverse(int[] perm) {
357 reverse(perm, 0, perm.length);
359 static void reverse(int[] perm, int start, int end) {
363 int x = perm[j]; perm[j] = perm[k]; perm[k] = x;
366 // Permute the args according to the inverse of perm.
367 static Object[] unpermuteArgs(int[] perm, Object[] args) {
368 return unpermuteArgs(perm, args, Object[].class);
370 static <T> T[] unpermuteArgs(int[] perm, T[] args, Class<T[]> Tclass) {
371 T[] res = Arrays.copyOf(new Object[0], perm.length, Tclass);
372 for (int i = 0; i < perm.length; i++)
373 res[perm[i]] = args[i];