[9] RFR(S): 8179678: ArrayCopy with same src and dst can cause incorrect execution or compiler crash

Tobias Hartmann tobias.hartmann at oracle.com
Tue May 16 15:49:53 UTC 2017


Hi Roland,

On 16.05.2017 14:22, Roland Westrelin wrote:
>> But in ArrayCopyNode::can_replace_dest_load_with_src_load() you return
>> false, if src == dst. Why is that?
> 
> See test2(): src[0] is the destination of the copy, it is replaced by a
> read of the source: src[0] which is the destination of the copy... and
> the compiler is sent into an infinite loop.

Yes but my point was that even if src == dst, it's not necessary the case that the arraycopy affects the offset we are reading from src.

Is the arraycopy still removed in the test2 case?

> This said, this test is too conservative. I've reworked it.

Okay, looks good now.

>> And in line 733, shouldn't we pass must_modify = false to detect the
>> case we the array copy _may_ modify the source we would load?
> 
> Yes, you're right. Thanks for spotting that.
> 
> New webrev:
> 
> http://cr.openjdk.java.net/~roland/8179678/webrev.01/

Looks good to me!

Best regards,
Tobias


More information about the hotspot-compiler-dev mailing list