On Wed, 10 Jun 2026 07:20:00 GMT, David Simms <[email protected]> wrote:
>> This is a "*sub-review pull request*" for the first >> [preview](https://openjdk.org/jeps/12) of [JEP 401: Value Classes and >> Objects](https://openjdk.org/jeps/401), specifically >> [JDK-8317279](https://bugs.openjdk.org/browse/JDK-8317279): Standard library >> implementation of value classes and objects >> >>> [!NOTE] >>> This pull request and the other sub-review pull requests listed below are >>> based on the "*master pull request*" >>> (https://github.com/openjdk/jdk/pull/31120). It contains the same full set >>> of code changes as the "*master pull request*" to preserve the full >>> implementation context; the language compiler, JVM, and standard library >>> changes are intertwined. This separate pull requests exist only to >>> subdivide the review and related discussion by area. >> >> Other areas for review: >> >> - [JDK-8317277](https://bugs.openjdk.org/browse/JDK-8317277): Java language >> implementation of value classes and objects >> - https://github.com/openjdk/jdk/pull/31121 >> - [JDK-8317278](https://bugs.openjdk.org/browse/JDK-8317278): JVM >> implementation of value classes and objects >> - https://github.com/openjdk/jdk/pull/31122 >> >> Code changes resulting from the review process should be made in >> [`valhalla/lworld`](https://github.com/openjdk/valhalla/). >> >> `valhalla/lworld` is currently updated from `jdk/master` whenever a weekly >> [`jdk` tag](https://github.com/openjdk/jdk/tags) is created. At that time, >> code changes from `valhalla/lworld` will be propagated to the master pull >> request and to all sub-review pull requests, including this one. >> >> Ultimately, review sign-off will be recorded on the "*master pull request*", >> and this pull request will be closed without integration. >> >> This pull request has a large code surface area and often conflicts with >> `jdk/master` on a daily basis. Refer to >> [`valhalla/lworld`](https://github.com/openjdk/valhalla/) for the latest >> state of the project code, keeping in mind that it may lag several days >> behind `jdk/master`. Both repositories may be needed as references during >> review. >> >> # PR implementation description >> >> Here's a high-level overview of what's included here. >> >> ### Core object behaviors >> >> Introduced `Objects` methods to test for identity and `IdentityException` for >> test failures; revised definitions of `==` and `identityHashCode` to work on >> the >> fields of value objects. >> >> - `src/java.base/share/classes/java/lang` >> - `src/java.base/share/classes/java/util` >> - `src/java.base/share/classes/java/lang/runtime` >> - ... > > David Simms has updated the pull request with a new target base due to a > merge or a rebase. The pull request now contains 2798 commits: > > - Merge remote-tracking branch 'valhalla/lworld' into > jep401_sub_review_8317279 > - 8386239: [lworld] Update jdk/java/util/Arrays/ArraysEqCmpTest.java > > Reviewed-by: liach > - 8386242: [lworld] Simplify and clarify StrictProcessor > > Reviewed-by: dsimms > - 8386140: [lworld] FieldReflector using wrong Class argument > > Reviewed-by: alanb, dsimms > - 8386216: [lworld] Rollback meaningless diff in EventClassBuilder > > Reviewed-by: dsimms > - 8385170: [lworld] Serialization spec needs to allow abstract value classes > like Number > > Reviewed-by: liach > - 8385980: [lworld] Standardize pattern for preview value class generation > > Reviewed-by: liach > - 8386086: [lworld] > sun/jvmstat/monitor/MonitoredVm/MonitorVmStartTerminate.java should be > removed from problem list > > Reviewed-by: liach, dcubed > - Merge > > Merge jdk-28+1 > - 8386090: [lworld] Redundant test changes in lworld versus mainline > > Reviewed-by: vromero > - ... and 2788 more: https://git.openjdk.org/jdk/compare/92298786...4d6d2888 src/java.base/share/classes/java/lang/Boolean.java line 58: > 56: * Use of value class instances for synchronization, mutexes, or > with > 57: * {@linkplain java.lang.ref.Reference object references} result > in > 58: * {@link IdentityException}. Should we specify the behaviour of value classes, for example when it comes to synchronization, at one single place and if necessary just link to that place instead of repeating this detail in all of the value class' javadocs? Perhaps the javadoc of `Class.isValue()` is a good place to specify this detail? If it takes a lot of rework to remove the duplicated text, then perhaps it could be done as a post integration cleanup? src/java.base/share/classes/jdk/internal/value/Deserializer.java line 22: > 20: * or visit www.oracle.com if you need additional information or have any > 21: * questions. > 22: */ The copyright text on this file appears to be incorrect. It's missing the "Classpath" exception lines. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/31123#discussion_r3414157218 PR Review Comment: https://git.openjdk.org/jdk/pull/31123#discussion_r3414177358
