Using Array.newInstance still generates checkcast instructions
john.r.rose at oracle.com
Tue Oct 27 17:56:43 UTC 2015
On Oct 27, 2015, at 10:46 AM, Vitaly Davidovich <vitalyd at gmail.com> wrote:
> The whole use case is inlined here, which is the case that bothers me. If the underlying array access is inlined, couldn't its runtime type be checked? I don't understand the heap pollution issue in this case. The field is not Object at JIT time.
As a more more limited use case for Array.newInstance, see Arrays.copyOfRange (four argument version).
That is supposed to copyOfRange(new String, …) is supposed to feed through the right type to the return value, and it's a bug if it doesn't.
There's some relevant difference in your use case (even after inlining) and copyOfRange; I think it's the field. Maybe our scalarization optimization is losing the type of the value; the rules for feeding types through fields (even after scalarization) are tricky.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the hotspot-compiler-dev