RFR(M): 8076188 Optimize arraycopy out for non escaping destination

Vladimir Kozlov vladimir.kozlov at oracle.com
Tue Apr 21 18:17:20 UTC 2015


On 4/21/15 11:09 AM, Roland Westrelin wrote:
> Thanks Vladimir for reviewing this.
>
>> Good.  Nice work.
>>
>> CallLeafNode::may_modify() - does arraycopy call have dest in different edges? Why you searching through inputs fro it?
>
> Stubs that can be called once an ArrayCopyNode is expanded have different signatures:

Okay. May be add comment to may_modify() to say that.

Thanks,
Vladimir

>
> // arraycopy stub variations:
> enum ArrayCopyType {
>    ac_fast,                      // void(ptr, ptr, size_t)
>    ac_checkcast,                 //  int(ptr, ptr, size_t, size_t, ptr)
>    ac_slow,                      // void(ptr, int, ptr, int, int)
>    ac_generic                    //  int(ptr, int, ptr, int, int)
> };
>
>
> Roland.
>
>>
>> Thanks,
>> Vladimir
>>
>> On 4/21/15 6:02 AM, Roland Westrelin wrote:
>>> http://cr.openjdk.java.net/~roland/8076188/webrev.00/
>>>
>>> This patch tries to eliminate ArrayCopyNodes (for instance clones, array clones, arraycopy and copyOf) when the destination of the copy doesn’t escape:
>>>
>>> - during escape analysis, ArrayCopyNodes don’t cause the destination of the copy to be marked as escaping anymore
>>> - a load to the destination of a copy may be replaced by a load from the source during IGVN
>>> - during macro expansion, ArrayCopyNodes don’t stop allocation from being eliminated and can themselves be eliminated
>>>
>>> Roland.
>>>
>


More information about the hotspot-compiler-dev mailing list