Porting to support JEP 401: Value Classes and Objects (Preview)
Dan Smith
daniel.smith at oracle.com
Mon Jan 5 23:21:56 UTC 2026
Hello, porters! The Valhalla project has been implementing JEP 401: Value Classes and Objects (Preview) in a branch of our Github repository. Over the next few months, we will be preparing to target and integrate the JEP.
This will be a very large commit touching many components of HotSpot, so now is a good time to start aligning your ports with the anticipated changes and ensuring conformance with the updated specifications.
Some pointers:
Value Classes JEP: https://openjdk.org/jeps/401
Supplementary strict field initialization JEP: https://openjdk.org/jeps/8350458
JVMS changes (value classes): https://cr.openjdk.org/~dlsmith/jep401/jep401-20251210/specs/value-objects-jvms.html
JVMS changes (field initialization): https://cr.openjdk.org/~dlsmith/jep401/jep401-20251210/specs/strict-fields-jvms.html
Git branch: https://github.com/openjdk/valhalla/tree/lworld
As a baseline, you may want to focus on *compliance* without adopting any of the value object *optimizations*. A compliant JVM will recognize and validate the ACC_IDENTITY and ACC_STRICT_INIT flags, and will follow the new semantics for 'acmp', 'ifnull', and 'monitorenter'; but can ignore the contents of 'LoadableDescriptors', and need not support scalarized or flattened object encodings.
Please reach out to valhalla-dev, or to me personally, if you need any help or clarifications to align with these changes.
More information about the porters-dev
mailing list