-
Bug
-
Resolution: Fixed
-
P3
-
None
-
b16
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8204429 | 11.0.1 | Vicente Arturo Romero Zaldivar | P3 | Resolved | Fixed | team |
Between 11+14 and 11+15, in calls to bootstrap this:
public static <T> Comparator<T> comparingInt(ToIntFunction<? super T> keyExtractor) {
Objects.requireNonNull(keyExtractor);
return (Comparator<T> & Serializable)
(c1, c2) -> Integer.compare(keyExtractor.applyAsInt(c1), keyExtractor.applyAsInt(c2));
}
... the parameters to altMetafactory for the indy has changed:
11+14:
3: #159 REF_invokeStatic java/lang/invoke/LambdaMetafactory.altMetafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
Method arguments:
#160 (Ljava/lang/Object;Ljava/lang/Object;)I
#185 REF_invokeStatic java/util/Comparator.lambda$comparingInt$7b0bb60$1:(Ljava/util/function/ToIntFunction;Ljava/lang/Object;Ljava/lang/Object;)I
#160 (Ljava/lang/Object;Ljava/lang/Object;)I
#162 5
#163 0
11+15:
3: #159 REF_invokeStatic java/lang/invoke/LambdaMetafactory.altMetafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
Method arguments:
#160 (Ljava/lang/Object;Ljava/lang/Object;)I
#186 REF_invokeStatic java/util/Comparator.lambda$comparingInt$7b0bb60$1:(Ljava/util/function/ToIntFunction;Ljava/lang/Object;Ljava/lang/Object;)I
#160 (Ljava/lang/Object;Ljava/lang/Object;)I
#162 7
#163 1
#5 java/util/Comparator
#164 0
Since the target type is java/util/Comparator, this change in behavior seems to be incorrect
public static <T> Comparator<T> comparingInt(ToIntFunction<? super T> keyExtractor) {
Objects.requireNonNull(keyExtractor);
return (Comparator<T> & Serializable)
(c1, c2) -> Integer.compare(keyExtractor.applyAsInt(c1), keyExtractor.applyAsInt(c2));
}
... the parameters to altMetafactory for the indy has changed:
11+14:
3: #159 REF_invokeStatic java/lang/invoke/LambdaMetafactory.altMetafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
Method arguments:
#160 (Ljava/lang/Object;Ljava/lang/Object;)I
#185 REF_invokeStatic java/util/Comparator.lambda$comparingInt$7b0bb60$1:(Ljava/util/function/ToIntFunction;Ljava/lang/Object;Ljava/lang/Object;)I
#160 (Ljava/lang/Object;Ljava/lang/Object;)I
#162 5
#163 0
11+15:
3: #159 REF_invokeStatic java/lang/invoke/LambdaMetafactory.altMetafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
Method arguments:
#160 (Ljava/lang/Object;Ljava/lang/Object;)I
#186 REF_invokeStatic java/util/Comparator.lambda$comparingInt$7b0bb60$1:(Ljava/util/function/ToIntFunction;Ljava/lang/Object;Ljava/lang/Object;)I
#160 (Ljava/lang/Object;Ljava/lang/Object;)I
#162 7
#163 1
#5 java/util/Comparator
#164 0
Since the target type is java/util/Comparator, this change in behavior seems to be incorrect
- backported by
-
JDK-8204429 Target interface added as marker interface in calls to altMetafactory
-
- Resolved
-
- relates to
-
JDK-8148354 Errors targeting functional interface intersection types
-
- Resolved
-