RFR: 8364751: ConstantBootstraps.explicitCast contradictory specification for null-to-primitive [v2]

Jorn Vernee jvernee at openjdk.org
Thu Aug 28 10:05:44 UTC 2025


On Wed, 27 Aug 2025 18:42:02 GMT, Chen Liang <liach at openjdk.org> wrote:

>> ConstantBootstraps.explicitCast behaves like a snippet of code in its specification. However, in the rest of the nominal spec, it incorrectly assumes a null `value` and a primitive `dstType` results in a ClassCastException instead of the zero value of that primitive type. This is inconsistent with that snippet and the actual code behavior.
>> 
>> The specification is fixed, the test for `explicitCast` is merged into the main `ConstantBootstraps` test, and a new unit test case for `value = null` and `dstType = char.class` is added, verifying the outcome is `'u0000'`.
>
> Chen Liang has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains four additional commits since the last revision:
> 
>  - Update wording and rendering again
>  - Merge branch 'master' of https://github.com/openjdk/jdk into doc/constboot-cast
>  - Update and consolidate tests
>  - 8364751: ConstantBootstraps.explicitCast violates doc contracts for null-to-int

Thanks for the updates

src/java.base/share/classes/java/lang/invoke/ConstantBootstraps.java line 378:

> 376:      *     <ol>
> 377:      *     <li>If {@code value} is null, the default value (JVMS {@jvms 2.3})
> 378:      *         of {@code dstType} is returned.

Very nice find!

-------------

Marked as reviewed by jvernee (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/26714#pullrequestreview-3164158665
PR Review Comment: https://git.openjdk.org/jdk/pull/26714#discussion_r2306906423


More information about the core-libs-dev mailing list