RFR 8225762 [lworld][c1] deoptimization fails with -XX:+StressValueTypeReturnedAsFields
Tobias Hartmann
tobias.hartmann at oracle.com
Fri Jun 14 07:40:20 UTC 2019
Hi Ioi,
looks good to me.
Thanks,
Tobias
On 14.06.19 07:06, Ioi Lam wrote:
> https://bugs.openjdk.java.net/browse/JDK-8225762
> http://cr.openjdk.java.net/~iklam/valhalla/8225762-c1-deopt-fails-with-StressValueTypeReturnedAsFields.v01/
>
>
> Evaluation: with ValueTypeReturnedAsFields==true, when test14_interp returns a
> value object, RAX contains (klass|0x1), and the fields of the value object is
> stored in other registers. In the deoptimization handler of test14, it needs
> to create a buffer object, in here:
>
> http://hg.openjdk.java.net/valhalla/valhalla/file/fb97bb15ea8e/src/hotspot/share/runtime/deoptimization.cpp#l223
>
>
> To handle this situation, when compiling test14(), C1 needs to set up the
> ScopeDesc for the invocation to test14_interp(), such that ScopeDesc::return_oop()
> and ScopeDesc::return_vt() both are true.
>
>
> I added two new test case in TestCallingConvention.java that are similar to the
> failed test14(), except that the call is made via a MethodHandle.
>
> Thanks
> - Ioi
More information about the valhalla-dev
mailing list