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/master`. Both repositories may be needed as references during review. > [!TIP] > Current minimum build configuration (subject to change): > `--with-boot-jdk=<jdk-26> --disable-jvm-feature-shenandoahgc` --------- - [x] I confirm that I make this contribution in accordance with the [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). ------------- Commit messages: - Merge lworld - 8384759: [lworld] fix recently introduced typo in ObjectFree event spec - 8383997: [lworld] Buffering via SharedRuntime::store_inline_type_fields_to_buf is slow - Merge - 8384525: [lworld] compiler/valhalla/inlinetypes/CorrectlyRestoreRfp.java timed out - 8384127: [lworld] C2 compilation failed with "graph should be schedulable" assert - 8384630: [lworld] Build failure after JDK-8383164 - 8383559: [lworld] Autobox cache removal causes performance regression with Renaissance benchmarks - 8384202: [lworld] C2: assert(offset == field->offset_in_bytes()) failed: offset mismatch - 8383164: [lworld] javadoc updates for value class serialization - ... and 2695 more: https://git.openjdk.org/jdk/compare/322dedba...15e9bb6f Changes: https://git.openjdk.org/jdk/pull/31120/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=31120&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8317277 Stats: 202091 lines in 1910 files changed: 189649 ins; 3574 del; 8868 mod Patch: https://git.openjdk.org/jdk/pull/31120.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/31120/head:pull/31120 PR: https://git.openjdk.org/jdk/pull/31120
