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

Roland Westrelin roland.westrelin at oracle.com
Tue Apr 21 18:19:12 UTC 2015


>> 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.

I will do that. Thanks again for the review.

Roland.

> 
> 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