RFR(M): 8076188 Optimize arraycopy out for non escaping destination
Roland Westrelin
roland.westrelin at oracle.com
Tue Apr 21 18:09:09 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:
// 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