test/java/lang/invoke/LFCaching/TestMethods.java

Print this page

        

@@ -42,11 +42,11 @@
 
     FOLD_ARGUMENTS("foldArguments") {
                 @Override
                 public Map<String, Object> getTestCaseData() {
                     Map<String, Object> data = new HashMap<>();
-                    int desiredArity = Helper.RNG.nextInt(Helper.MAX_ARITY);
+                    int desiredArity = Helper.RNG.nextInt(super.maxArity);
                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
                     data.put("mtTarget", mtTarget);
                     // Arity after reducing because of long and double take 2 slots.
                     int realArity = mtTarget.parameterCount();
                     int modifierMHArgNum = Helper.RNG.nextInt(realArity + 1);

@@ -81,19 +81,19 @@
             },
     DROP_ARGUMENTS("dropArguments") {
                 @Override
                 public Map<String, Object> getTestCaseData() {
                     Map<String, Object> data = new HashMap<>();
-                    int desiredArity = Helper.RNG.nextInt(Helper.MAX_ARITY);
+                    int desiredArity = Helper.RNG.nextInt(super.maxArity);
                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
                     data.put("mtTarget", mtTarget);
                     // Arity after reducing because of long and double take 2 slots.
                     int realArity = mtTarget.parameterCount();
                     int dropArgsPos = Helper.RNG.nextInt(realArity + 1);
                     data.put("dropArgsPos", dropArgsPos);
                     MethodType mtDropArgs = TestMethods.randomMethodTypeGenerator(
-                            Helper.RNG.nextInt(Helper.MAX_ARITY - realArity));
+                            Helper.RNG.nextInt(super.maxArity - realArity));
                     data.put("mtDropArgs", mtDropArgs);
                     return data;
                 }
 
                 @Override

@@ -104,24 +104,24 @@
                     MethodHandle target = TestMethods.methodHandleGenerator(mtTarget.returnType(),
                             mtTarget.parameterList(), kind);
                     int mtTgtSlotsCount = TestMethods.argSlotsCount(mtTarget);
                     int mtDASlotsCount = TestMethods.argSlotsCount(mtDropArgs);
                     List<Class<?>> fakeParList;
-                    if (mtTgtSlotsCount + mtDASlotsCount > Helper.MAX_ARITY - 1) {
+                    if (mtTgtSlotsCount + mtDASlotsCount > super.maxArity - 1) {
                         fakeParList = TestMethods.reduceArgListToSlotsCount(mtDropArgs.parameterList(),
-                                Helper.MAX_ARITY - mtTgtSlotsCount - 1);
+                                super.maxArity - mtTgtSlotsCount - 1);
                     } else {
                         fakeParList = mtDropArgs.parameterList();
                     }
                     return MethodHandles.dropArguments(target, dropArgsPos, fakeParList);
                 }
             },
-    EXPLICIT_CAST_ARGUMENTS("explicitCastArguments") {
+    EXPLICIT_CAST_ARGUMENTS("explicitCastArguments", Helper.MAX_ARITY / 2) {
                 @Override
                 public Map<String, Object> getTestCaseData() {
                     Map<String, Object> data = new HashMap<>();
-                    int desiredArity = Helper.RNG.nextInt(Helper.MAX_ARITY / 2);
+                    int desiredArity = Helper.RNG.nextInt(super.maxArity);
                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
                     data.put("mtTarget", mtTarget);
                     // Arity after reducing because of long and double take 2 slots.
                     int realArity = mtTarget.parameterCount();
                     MethodType mtExcplCastArgs = TestMethods.randomMethodTypeGenerator(realArity);

@@ -144,15 +144,15 @@
                     MethodHandle target = TestMethods.methodHandleGenerator(mtTarget.returnType(),
                             mtTarget.parameterList(), kind);
                     return MethodHandles.explicitCastArguments(target, mtExcplCastArgs);
                 }
             },
-    FILTER_ARGUMENTS("filterArguments") {
+    FILTER_ARGUMENTS("filterArguments", Helper.MAX_ARITY / 2) {
                 @Override
                 public Map<String, Object> getTestCaseData() {
                     Map<String, Object> data = new HashMap<>();
-                    int desiredArity = Helper.RNG.nextInt(Helper.MAX_ARITY / 2);
+                    int desiredArity = Helper.RNG.nextInt(super.maxArity);
                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
                     data.put("mtTarget", mtTarget);
                     // Arity after reducing because of long and double take 2 slots.
                     int realArity = mtTarget.parameterCount();
                     int filterArgsPos = Helper.RNG.nextInt(realArity + 1);

@@ -182,11 +182,11 @@
             },
     FILTER_RETURN_VALUE("filterReturnValue") {
                 @Override
                 public Map<String, Object> getTestCaseData() {
                     Map<String, Object> data = new HashMap<>();
-                    int desiredArity = Helper.RNG.nextInt(Helper.MAX_ARITY);
+                    int desiredArity = Helper.RNG.nextInt(super.maxArity);
                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
                     data.put("mtTarget", mtTarget);
                     // Arity after reducing because of long and double take 2 slots.
                     int realArity = mtTarget.parameterCount();
                     int filterArgsPos = Helper.RNG.nextInt(realArity + 1);

@@ -209,11 +209,11 @@
             },
     INSERT_ARGUMENTS("insertArguments") {
                 @Override
                 public Map<String, Object> getTestCaseData() {
                     Map<String, Object> data = new HashMap<>();
-                    int desiredArity = Helper.RNG.nextInt(Helper.MAX_ARITY);
+                    int desiredArity = Helper.RNG.nextInt(super.maxArity);
                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
                     data.put("mtTarget", mtTarget);
                     // Arity after reducing because of long and double take 2 slots.
                     int realArity = mtTarget.parameterCount();
                     int insertArgsPos = Helper.RNG.nextInt(realArity + 1);

@@ -234,22 +234,22 @@
                             mtTarget.parameterList(), kind);
                     Object[] insertList = Helper.randomArgs(mtInsertArgs.parameterList());
                     return MethodHandles.insertArguments(target, insertArgsPos, insertList);
                 }
             },
-    PERMUTE_ARGUMENTS("permuteArguments") {
+    PERMUTE_ARGUMENTS("permuteArguments", Helper.MAX_ARITY / 2) {
                 @Override
                 public Map<String, Object> getTestCaseData() {
                     Map<String, Object> data = new HashMap<>();
-                    int desiredArity = Helper.RNG.nextInt(Helper.MAX_ARITY / 2);
+                    int desiredArity = Helper.RNG.nextInt(super.maxArity);
                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
                     // Arity after reducing because of long and double take 2 slots.
                     int realArity = mtTarget.parameterCount();
                     int[] permuteArgsReorderArray = new int[realArity];
-                    int mtParmuteArgsNum = Helper.RNG.nextInt(Helper.MAX_ARITY);
-                    mtParmuteArgsNum = mtParmuteArgsNum == 0 ? 1 : mtParmuteArgsNum;
-                    MethodType mtPermuteArgs = TestMethods.randomMethodTypeGenerator(mtParmuteArgsNum);
+                    int mtPermuteArgsNum = Helper.RNG.nextInt(Helper.MAX_ARITY);
+                    mtPermuteArgsNum = mtPermuteArgsNum == 0 ? 1 : mtPermuteArgsNum;
+                    MethodType mtPermuteArgs = TestMethods.randomMethodTypeGenerator(mtPermuteArgsNum);
                     mtTarget = mtTarget.changeReturnType(mtPermuteArgs.returnType());
                     for (int i = 0; i < realArity; i++) {
                         int mtPermuteArgsParNum = Helper.RNG.nextInt(mtPermuteArgs.parameterCount());
                         permuteArgsReorderArray[i] = mtPermuteArgsParNum;
                         mtTarget = mtTarget.changeParameterType(

@@ -273,11 +273,11 @@
             },
     THROW_EXCEPTION("throwException") {
                 @Override
                 public Map<String, Object> getTestCaseData() {
                     Map<String, Object> data = new HashMap<>();
-                    int desiredArity = Helper.RNG.nextInt(Helper.MAX_ARITY);
+                    int desiredArity = Helper.RNG.nextInt(super.maxArity);
                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
                     data.put("mtTarget", mtTarget);
                     return data;
                 }
 

@@ -291,11 +291,11 @@
             },
     GUARD_WITH_TEST("guardWithTest") {
                 @Override
                 public Map<String, Object> getTestCaseData() {
                     Map<String, Object> data = new HashMap<>();
-                    int desiredArity = Helper.RNG.nextInt(Helper.MAX_ARITY);
+                    int desiredArity = Helper.RNG.nextInt(super.maxArity);
                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
                     data.put("mtTarget", mtTarget);
                     // Arity after reducing because of long and double take 2 slots.
                     int realArity = mtTarget.parameterCount();
                     int modifierMHArgNum = Helper.RNG.nextInt(realArity + 1);

@@ -327,11 +327,11 @@
             },
     CATCH_EXCEPTION("catchException") {
                 @Override
                 public Map<String, Object> getTestCaseData() {
                     Map<String, Object> data = new HashMap<>();
-                    int desiredArity = Helper.RNG.nextInt(Helper.MAX_ARITY);
+                    int desiredArity = Helper.RNG.nextInt(super.maxArity);
                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
                     data.put("mtTarget", mtTarget);
                     // Arity after reducing because of long and double take 2 slots.
                     int realArity = mtTarget.parameterCount();
                     int modifierMHArgNum = Helper.RNG.nextInt(realArity + 1);

@@ -357,15 +357,15 @@
                     MethodHandle handler = TestMethods.methodHandleGenerator(
                             mtTarget.returnType(), handlerParamList, TestMethods.Kind.TWO);
                     return MethodHandles.catchException(target, Exception.class, handler);
                 }
             },
-    INVOKER("invoker") {
+    INVOKER("invoker", Helper.MAX_ARITY - 1) {
                 @Override
                 public Map<String, Object> getTestCaseData() {
                     Map<String, Object> data = new HashMap<>();
-                    int desiredArity = Helper.RNG.nextInt(Helper.MAX_ARITY);
+                    int desiredArity = Helper.RNG.nextInt(super.maxArity);
                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
                     data.put("mtTarget", mtTarget);
                     return data;
                 }
 

@@ -373,15 +373,15 @@
                 protected MethodHandle getMH(Map<String, Object> data, TestMethods.Kind kind) {
                     MethodType mtTarget = (MethodType) data.get("mtTarget");
                     return MethodHandles.invoker(mtTarget);
                 }
             },
-    EXACT_INVOKER("exactInvoker") {
+    EXACT_INVOKER("exactInvoker", Helper.MAX_ARITY - 1) {
                 @Override
                 public Map<String, Object> getTestCaseData() {
                     Map<String, Object> data = new HashMap<>();
-                    int desiredArity = Helper.RNG.nextInt(Helper.MAX_ARITY);
+                    int desiredArity = Helper.RNG.nextInt(super.maxArity);
                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
                     data.put("mtTarget", mtTarget);
                     return data;
                 }
 

@@ -389,15 +389,15 @@
                 protected MethodHandle getMH(Map<String, Object> data, TestMethods.Kind kind) {
                     MethodType mtTarget = (MethodType) data.get("mtTarget");
                     return MethodHandles.exactInvoker(mtTarget);
                 }
             },
-    SPREAD_INVOKER("spreadInvoker") {
+    SPREAD_INVOKER("spreadInvoker", Helper.MAX_ARITY - 1) {
                 @Override
                 public Map<String, Object> getTestCaseData() {
                     Map<String, Object> data = new HashMap<>();
-                    int desiredArity = Helper.RNG.nextInt(Helper.MAX_ARITY);
+                    int desiredArity = Helper.RNG.nextInt(super.maxArity);
                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
                     data.put("mtTarget", mtTarget);
                     // Arity after reducing because of long and double take 2 slots.
                     int realArity = mtTarget.parameterCount();
                     int modifierMHArgNum = Helper.RNG.nextInt(realArity + 1);

@@ -414,11 +414,11 @@
             },
     ARRAY_ELEMENT_GETTER("arrayElementGetter") {
                 @Override
                 public Map<String, Object> getTestCaseData() {
                     Map<String, Object> data = new HashMap<>();
-                    int desiredArity = Helper.RNG.nextInt(Helper.MAX_ARITY);
+                    int desiredArity = Helper.RNG.nextInt(super.maxArity);
                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
                     data.put("mtTarget", mtTarget);
                     return data;
                 }
 

@@ -434,11 +434,11 @@
             },
     ARRAY_ELEMENT_SETTER("arrayElementSetter") {
                 @Override
                 public Map<String, Object> getTestCaseData() {
                     Map<String, Object> data = new HashMap<>();
-                    int desiredArity = Helper.RNG.nextInt(Helper.MAX_ARITY);
+                    int desiredArity = Helper.RNG.nextInt(super.maxArity);
                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
                     data.put("mtTarget", mtTarget);
                     return data;
                 }
 

@@ -454,11 +454,11 @@
             },
     CONSTANT("constant") {
                 @Override
                 public Map<String, Object> getTestCaseData() {
                     Map<String, Object> data = new HashMap<>();
-                    int desiredArity = Helper.RNG.nextInt(Helper.MAX_ARITY);
+                    int desiredArity = Helper.RNG.nextInt(super.maxArity);
                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
                     data.put("mtTarget", mtTarget);
                     return data;
                 }
 

@@ -479,11 +479,11 @@
             },
     IDENTITY("identity") {
                 @Override
                 public Map<String, Object> getTestCaseData() {
                     Map<String, Object> data = new HashMap<>();
-                    int desiredArity = Helper.RNG.nextInt(Helper.MAX_ARITY);
+                    int desiredArity = Helper.RNG.nextInt(super.maxArity);
                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
                     data.put("mtTarget", mtTarget);
                     return data;
                 }
 

@@ -501,12 +501,19 @@
     /**
      * Test method's name.
      */
     public final String name;
 
-    private TestMethods(String name) {
+    private final int maxArity;
+    
+    private TestMethods(String name, int maxArity) {
         this.name = name;
+        this.maxArity = maxArity;
+    }
+    
+    private TestMethods(String name) {
+        this(name, Helper.MAX_ARITY);
     }
 
     protected MethodHandle getMH(Map<String, Object> data, TestMethods.Kind kind) throws NoSuchMethodException, IllegalAccessException {
         throw new UnsupportedOperationException("TESTBUG: getMH method is not implemented for test method " + this);
     }