On Fri, 26 Jun 2026 06:40:39 GMT, David Simms <[email protected]> wrote:
>> This pull request implements the first >> [preview](https://openjdk.org/jeps/12) of [JEP 401: Value Classes and >> Objects](https://openjdk.org/jeps/401): >> >> - [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 >> - [JDK-8317279](https://bugs.openjdk.org/browse/JDK-8317279): Standard >> library implementation of value classes and objects >> - https://github.com/openjdk/jdk/pull/31123 >> >> This pull request also includes the implementation of [Strict Field >> Initialization in the JVM (Preview)](https://openjdk.org/jeps/8350458) (yet >> to have been assigned a JEP number). That work was implemented in the same >> code base because JEP 401 depends on strict field initialization. >> >> This is the "*master pull request*" for the initial preview of [JEP >> 401](https://openjdk.org/jeps/401). Comments and review for a change this >> large will not scale well in a single pull request. This pull request serves >> as the vehicle for sign-off and integration into >> [`jdk/master`](https://github.com/openjdk/jdk). **Review comments should be >> directed to the appropriate "*sub-review pull request*" listed above.** >> >>> [!NOTE] >>> The "*sub-review pull requests*" contain the same full set of code changes >>> as this "*master pull request*" to preserve the full implementation >>> context; the language compiler, JVM, and standard library changes are >>> intertwined. The separate pull requests exist only to subdivide the review >>> and related discussion by area. >> >> Any resulting code changes 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 this pull request >> and to all sub-review pull requests. >> >> Ultimately, review sign-off will be recorded on this "*master pull >> request*", and the "*sub-review pull requests*" will be closed without >> integration. >> >> This pull request has a large surface area and frequently conflicts with >> `jdk/master`. 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/mast... > > David Simms has updated the pull request with a new target base due to a > merge or a rebase. The pull request now contains 2854 commits: > > - Merge remote-tracking branch 'valhalla/lworld' into 8317277 > - Merge > > Merge jdk-28+4 > - 8386963: [lworld] Improve the exception message from Object > synchronization methods on value objects > > Reviewed-by: dholmes, alanb > - 8387300: [lworld] Minor review comments in javac > > Reviewed-by: vromero > - 8387192: [lworld] Review comment drop for core libs > > Reviewed-by: jvernee, vromero > - 8386999: [lworld] C2: assert(is_dead_loop_safe()) failed: shouldn't be > cleared yet > > Reviewed-by: qamai, vlivanov > - 8386787: [lworld] > compiler/valhalla/inlinetypes/TestValueConstruction.java#StressIncrementalInliningDontInlineMyAbstractInit > timed out > > Reviewed-by: phubner, chagedorn > - 8386995: [lworld] Duplicate value classes are a preview feature warning > > Reviewed-by: alanb, vromero > - 8383389: [lworld] Augment AOTMapLogger::print_oop_details to support flat > arrays with oops > > Reviewed-by: iklam, fparain > - 8383386: [lworld] test_objArrayOop needs to take the array rework into > account > > Reviewed-by: phubner, jsjolen > - ... and 2844 more: https://git.openjdk.org/jdk/compare/193de1b1...5ee106a2 test/jdk/java/io/Serializable/valueObjects/ValueSerializationTest.java line 65: > 63: import static org.junit.jupiter.api.Assertions.*; > 64: > 65: public class ValueSerializationTest { @liach Chen, do you know if there exists any cross-preview tests for serialization/deserialization of the boxed types? I.e. does there exist a test that verifies whether a boxed primitive can be serialized using both preview and non-preview that can subsequently be deserialized by the inverse-preview? (cross-compatibility test) /cc @AlanBateman ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/31120#discussion_r3482536287
