RFR 8228633 [lworld][c1] method invocation fails if the return type is an unloaded Q type

Ioi Lam ioi.lam at oracle.com
Thu Jul 25 22:35:36 UTC 2019



When a C1-compiled method A calls a method B with a return type "QT;",
but T has not be loaded at the time of compilation, the caller will
not check if the returned value is passed as unpacked fields.


I added a new function ciSignature::maybe_returns_never_null(), so we would
always generate the "test $rax, 0x1" check in this situation. The check 
may not
be necessary if it turns out that type T is too large to be returned as 
but such a check is harmless.

- Ioi

More information about the valhalla-dev mailing list