RFR 8225762 [lworld][c1] deoptimization fails with -XX:+StressValueTypeReturnedAsFields

Ioi Lam ioi.lam at oracle.com
Fri Jun 14 05:06:38 UTC 2019


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:


To handle this situation, when compiling test14(), C1 needs to set up the
ScopeDesc for the invocation to test14_interp(), such that 
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.

- Ioi

More information about the valhalla-dev mailing list