Skip to content

Commit 4c673df

Browse files
stsypanovJornVernee
authored andcommittedSep 15, 2021
8273656: Improve java.lang.invoke.MethodType.parameterList() and its usage
Reviewed-by: jvernee, vlivanov, mchung
1 parent 8fbcc82 commit 4c673df

File tree

2 files changed

+7
-7
lines changed

2 files changed

+7
-7
lines changed
 

‎src/java.base/share/classes/java/lang/invoke/MethodHandles.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -5882,8 +5882,8 @@ private static void filterReturnValueChecks(MethodType targetType, MethodType fi
58825882
BoundMethodHandle result = target.rebind();
58835883
LambdaForm lform = result.editor().collectReturnValueForm(filterType.basicType());
58845884
MethodType newType = targetType.changeReturnType(filterType.returnType());
5885-
if (filterType.parameterList().size() > 1) {
5886-
for (int i = 0 ; i < filterType.parameterList().size() - 1 ; i++) {
5885+
if (filterType.parameterCount() > 1) {
5886+
for (int i = 0 ; i < filterType.parameterCount() - 1 ; i++) {
58875887
newType = newType.appendParameterTypes(filterType.parameterType(i));
58885888
}
58895889
}
@@ -6735,7 +6735,7 @@ private static List<Class<?>> longestParameterList(Stream<MethodHandle> mhs, int
67356735
filter(t -> t.parameterCount() > skipSize).
67366736
map(MethodType::parameterList).
67376737
reduce((p, q) -> p.size() >= q.size() ? p : q).orElse(empty);
6738-
return longest.size() == 0 ? empty : longest.subList(skipSize, longest.size());
6738+
return longest.isEmpty() ? empty : longest.subList(skipSize, longest.size());
67396739
}
67406740

67416741
private static List<Class<?>> longestParameterList(List<List<Class<?>>> lists) {
@@ -7019,7 +7019,7 @@ private static void whileLoopChecks(MethodHandle init, MethodHandle pred, Method
70197019
List<Class<?>> outerList = innerList;
70207020
if (returnType == void.class) {
70217021
// OK
7022-
} else if (innerList.size() == 0 || innerList.get(0) != returnType) {
7022+
} else if (innerList.isEmpty() || innerList.get(0) != returnType) {
70237023
// leading V argument missing => error
70247024
MethodType expected = bodyType.insertParameterTypes(0, returnType);
70257025
throw misMatchedTypes("body function", bodyType, expected);
@@ -7349,7 +7349,7 @@ private static void countedLoopChecks(MethodHandle start, MethodHandle end, Meth
73497349
List<Class<?>> innerList = bodyType.parameterList();
73507350
// strip leading V value if present
73517351
int vsize = (returnType == void.class ? 0 : 1);
7352-
if (vsize != 0 && (innerList.size() == 0 || innerList.get(0) != returnType)) {
7352+
if (vsize != 0 && (innerList.isEmpty() || innerList.get(0) != returnType)) {
73537353
// argument list has no "V" => error
73547354
MethodType expected = bodyType.insertParameterTypes(0, returnType);
73557355
throw misMatchedTypes("body function", bodyType, expected);
@@ -7573,7 +7573,7 @@ private static Class<?> iteratedLoopChecks(MethodHandle iterator, MethodHandle i
75737573
List<Class<?>> internalParamList = bodyType.parameterList();
75747574
// strip leading V value if present
75757575
int vsize = (returnType == void.class ? 0 : 1);
7576-
if (vsize != 0 && (internalParamList.size() == 0 || internalParamList.get(0) != returnType)) {
7576+
if (vsize != 0 && (internalParamList.isEmpty() || internalParamList.get(0) != returnType)) {
75777577
// argument list has no "V" => error
75787578
MethodType expected = bodyType.insertParameterTypes(0, returnType);
75797579
throw misMatchedTypes("body function", bodyType, expected);

‎src/java.base/share/classes/java/lang/invoke/MethodType.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -792,7 +792,7 @@ public Class<?> returnType() {
792792
* @return the parameter types (as an immutable list)
793793
*/
794794
public List<Class<?>> parameterList() {
795-
return Collections.unmodifiableList(Arrays.asList(ptypes.clone()));
795+
return List.of(ptypes);
796796
}
797797

798798
/**

1 commit comments

Comments
 (1)

openjdk-notifier[bot] commented on Sep 15, 2021

@openjdk-notifier[bot]
Please sign in to comment.