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. ------------- Commit messages: - useless import - Value construction with reflection Changes: https://git.openjdk.org/valhalla/pull/2204/files Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2204&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8378560 Stats: 97 lines in 10 files changed: 72 ins; 12 del; 13 mod Patch: https://git.openjdk.org/valhalla/pull/2204.diff Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2204/head:pull/2204 PR: https://git.openjdk.org/valhalla/pull/2204
