On Thu, 18 Dec 2025 16:25:29 GMT, Chen Liang <[email protected]> wrote:

>> What I mean by stronger is that trusted final fields only ensure that their 
>> values are unchanged after initialization. Strict fields are unchanged 
>> unconditionally, there is only 1 observable state for a strict field of an 
>> object. As a result, in addition to constant folding, we can do load 
>> hoisting, too. So my question is why this annotation does not try to enforce 
>> a stronger invariant so that we can benefit from those invariants without 
>> having to wait for strict fields.
>
>> So my question is why this annotation does not try to enforce a stronger 
>> invariant so that we can benefit from those invariants without having to 
>> wait for strict fields.
> 
> No. We currently cannot enforce such final fields to be all written before 
> the `Object::<init>` entry, and I also don't think mainline has this safe 
> publication fence at the beginning of `Object::<init>` either.

@liach I don't think we need such a condition, we only need to ensure that the 
fields are not read from and the object does not escape to memory before the 
termination of `<init>`.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/28540#issuecomment-3671176336

Reply via email to