RFR: 8335922: Incorrect @Stable usage of LambdaForm$Name.index [v4]
ExE Boss
duke at openjdk.org
Tue Jul 16 00:41:52 UTC 2024
On Mon, 15 Jul 2024 22:56:23 GMT, Chen Liang <liach at openjdk.org> wrote:
>> The `@Stable` on the `index` field is incorrect, as stable only avoids inlining `0`. On a strategic view, this index field should just become final so that `Name` becomes eligible for value class migration once valhalla comes. This patch makes the `index` field final and updates the usages correspondingly.
>
> Chen Liang has updated the pull request incrementally with four additional commits since the last revision:
>
> - Make LambdaForm.Name index final
> - Revert "8335922: Incorrect stable usage of LambdaForm$Name.index"
>
> This reverts commit 7d111ba3655c4c282399a4793e2cf5d91618432f.
> - Revert "We have sufficient space in short, use +1 offset"
>
> This reverts commit 0743c5f924fa07ea13f8545604f870091fa8d23a.
> - Revert "Encapsulate offsetIndex, share computation result"
>
> This reverts commit db805834d7117e5752bebcbd671afa6c85ff2cf0.
src/java.base/share/classes/java/lang/invoke/LambdaForm.java line 1388:
> 1386: Name withIndex(int i) {
> 1387: return new Name(i, type, function, arguments, constraint);
> 1388: }
Maybe also do what `Name::withConstraint(Object)` does?
Suggestion:
Name withIndex(int i) {
if (i == this.index) return this;
return new Name(i, type, function, arguments, constraint);
}
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20178#discussion_r1678596068
More information about the core-libs-dev
mailing list