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

Reply via email to