On Fri, 6 Mar 2026 04:13:43 GMT, Quan Anh Mai <[email protected]> wrote:

> Hi,
> 
> Reflective construction of value object triggers assert in C2 because it does 
> not follow the normal object construction pattern and is technically UB 
> because we try to return a larval object from a method. I was told that this 
> is required for the construction of hidden classes, but to me it seems like 
> we put those restrictions on ourselves and shoot ourselves in the foot by 
> using these `Unsafe` hacks.
> 
> This PR tries to fix this issue by letting the compiler know of these methods 
> which can return or accept larval objects. Note that this is pretty fragile, 
> and seemingly harmless changes to the code shape generated by the 
> `MethodHandle` mechanism can break it, which is a usual symptom of undefined 
> behaviour.
> 
> Please take a look and leave your review, thanks a lot.

The recognition of "may be larval" seems sufficient. Is it okay if it 
recognizes non-larval calls like invokespecial on private methods as "may be 
larval"? Would that create potential regressions?

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

PR Comment: https://git.openjdk.org/valhalla/pull/2204#issuecomment-4009481911

Reply via email to