<html aria-label="message body">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;">
<div>Just a note that I've cleaned up some of the JLS rules regarding field accesses in early construction. Update posted here:</div>
<div><br>
</div>
<div><a href="https://cr.openjdk.org/~dlsmith/jep401/jep401-20250926/specs/value-objects-jls.html">https://cr.openjdk.org/~dlsmith/jep401/jep401-20251210/specs/value-objects-jls.html</a><br>
</div>
<div><br>
</div>
<div>
<blockquote type="cite">
<div>On Sep 26, 2025, at 3:57 PM, Dan Smith <daniel.smith@oracle.com> wrote:</div>
<br class="Apple-interchange-newline">
<div>
<div>Please see these spec change documents, revised to align with current plans for the Value Classes and Objects JEP.<br>
<br>
https://cr.openjdk.org/~dlsmith/jep401/jep401-20250926/specs/value-objects-jls.html<br>
https://cr.openjdk.org/~dlsmith/jep401/jep401-20250926/specs/value-objects-jvms.html<br>
<br>
I've also revised the JEP in the last couple of months, which you can view here:<br>
<br>
https://openjdk.org/jeps/401<br>
<br>
Some highlights:<br>
<br>
- Clarified the presentation of how == works, with extensive discussion in the JEP<br>
- Instance fields can be both written and read in early construction<br>
- Record classes adopt the same early construction behavior as value classes<br>
- Memory model rules to ensure correct values are read from value and record class fields (and, eventually, other strict fields)<br>
- New verifier rules disallowing acmp/ifnull on uninitialized types<br>
<br>
A linked JVMS document covers the Strict Field Initialization JEP, although I still have some work to do to refresh and polish that one.<br>
<br>
</div>
</div>
</blockquote>
</div>
<br>
</body>
</html>