< prev index next >

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

Print this page




 190                     // Arity after reducing because of long and double take 2 slots.
 191                     int realArity = mtTarget.parameterCount();
 192                     int filterArgsPos = Helper.RNG.nextInt(realArity + 1);
 193                     int filtersArgsArrayLength = Helper.RNG.nextInt(realArity + 1 - filterArgsPos);
 194                     MethodType mtFilter = TestMethods.randomMethodTypeGenerator(filtersArgsArrayLength);
 195                     data.put("mtFilter", mtFilter);
 196                     return data;
 197                 }
 198 
 199                 @Override
 200                 protected MethodHandle getMH(Map<String, Object> data, TestMethods.Kind kind) throws NoSuchMethodException, IllegalAccessException {
 201                     MethodType mtTarget = (MethodType) data.get("mtTarget");
 202                     MethodType mtFilter = (MethodType) data.get("mtFilter");
 203                     MethodHandle target = TestMethods.methodHandleGenerator(mtTarget.returnType(),
 204                             mtTarget.parameterList(), kind);
 205                     MethodHandle filter = TestMethods.filterGenerator(mtTarget.returnType(),
 206                             mtFilter.returnType(), kind);
 207                     return MethodHandles.filterReturnValue(target, filter);
 208                 }
 209             },
 210     INSERT_ARGUMENTS("insertArguments") {
 211                 @Override
 212                 public Map<String, Object> getTestCaseData() {
 213                     Map<String, Object> data = new HashMap<>();
 214                     int desiredArity = Helper.RNG.nextInt(super.maxArity);
 215                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
 216                     data.put("mtTarget", mtTarget);
 217                     // Arity after reducing because of long and double take 2 slots.
 218                     int realArity = mtTarget.parameterCount();
 219                     int insertArgsPos = Helper.RNG.nextInt(realArity + 1);
 220                     data.put("insertArgsPos", insertArgsPos);
 221                     int insertArgsArrayLength = Helper.RNG.nextInt(realArity + 1 - insertArgsPos);
 222                     MethodType mtInsertArgs = MethodType.methodType(void.class, mtTarget.parameterList()
 223                             .subList(insertArgsPos, insertArgsPos + insertArgsArrayLength));
 224                     data.put("mtInsertArgs", mtInsertArgs);
 225                     return data;
 226                 }
 227 
 228                 @Override
 229                 protected MethodHandle getMH(Map<String, Object> data, TestMethods.Kind kind) throws NoSuchMethodException, IllegalAccessException {
 230                     MethodType mtTarget = (MethodType) data.get("mtTarget");




 190                     // Arity after reducing because of long and double take 2 slots.
 191                     int realArity = mtTarget.parameterCount();
 192                     int filterArgsPos = Helper.RNG.nextInt(realArity + 1);
 193                     int filtersArgsArrayLength = Helper.RNG.nextInt(realArity + 1 - filterArgsPos);
 194                     MethodType mtFilter = TestMethods.randomMethodTypeGenerator(filtersArgsArrayLength);
 195                     data.put("mtFilter", mtFilter);
 196                     return data;
 197                 }
 198 
 199                 @Override
 200                 protected MethodHandle getMH(Map<String, Object> data, TestMethods.Kind kind) throws NoSuchMethodException, IllegalAccessException {
 201                     MethodType mtTarget = (MethodType) data.get("mtTarget");
 202                     MethodType mtFilter = (MethodType) data.get("mtFilter");
 203                     MethodHandle target = TestMethods.methodHandleGenerator(mtTarget.returnType(),
 204                             mtTarget.parameterList(), kind);
 205                     MethodHandle filter = TestMethods.filterGenerator(mtTarget.returnType(),
 206                             mtFilter.returnType(), kind);
 207                     return MethodHandles.filterReturnValue(target, filter);
 208                 }
 209             },
 210     INSERT_ARGUMENTS("insertArguments", Helper.MAX_ARITY - 3) {
 211                 @Override
 212                 public Map<String, Object> getTestCaseData() {
 213                     Map<String, Object> data = new HashMap<>();
 214                     int desiredArity = Helper.RNG.nextInt(super.maxArity);
 215                     MethodType mtTarget = TestMethods.randomMethodTypeGenerator(desiredArity);
 216                     data.put("mtTarget", mtTarget);
 217                     // Arity after reducing because of long and double take 2 slots.
 218                     int realArity = mtTarget.parameterCount();
 219                     int insertArgsPos = Helper.RNG.nextInt(realArity + 1);
 220                     data.put("insertArgsPos", insertArgsPos);
 221                     int insertArgsArrayLength = Helper.RNG.nextInt(realArity + 1 - insertArgsPos);
 222                     MethodType mtInsertArgs = MethodType.methodType(void.class, mtTarget.parameterList()
 223                             .subList(insertArgsPos, insertArgsPos + insertArgsArrayLength));
 224                     data.put("mtInsertArgs", mtInsertArgs);
 225                     return data;
 226                 }
 227 
 228                 @Override
 229                 protected MethodHandle getMH(Map<String, Object> data, TestMethods.Kind kind) throws NoSuchMethodException, IllegalAccessException {
 230                     MethodType mtTarget = (MethodType) data.get("mtTarget");


< prev index next >