On Fri, 6 Mar 2026 04:44:51 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. > > Quan Anh Mai has updated the pull request incrementally with one additional > commit since the last revision: > > rename Otherwise, looks good, thanks! src/hotspot/share/ci/ciMethod.hpp line 400: > 398: > 399: // Generally, a method cannot return a larval object or receive a > larval argument. There are some > 400: // exceptions. Can you also give a description about the exceptions here? Maybe you can also move it to the definition to easier follow the cases outlined. ------------- Marked as reviewed by chagedorn (Committer). PR Review: https://git.openjdk.org/valhalla/pull/2204#pullrequestreview-3927341533 PR Review Comment: https://git.openjdk.org/valhalla/pull/2204#discussion_r2916284867
