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