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