[jdk16] RFR: 8258272: LoadVectorMaskedNode can't be replaced by zero con

Christian Hagedorn chagedorn at openjdk.java.net
Tue Jan 12 08:20:02 UTC 2021


On Mon, 11 Jan 2021 22:51:48 GMT, Nils Eliasson <neliasso at openjdk.org> wrote:

> A test fails for this code:
> 
> byte [] src = new byte[0];
> byte [] dest = Arrays::copy_of(src);
> 
> This is transformed to something like:
> byte [] src = new byte[0];
> byte [] dest = new byte[0];
> System.arraycopy(src, 0, dest, 0, src.lenght());
> 
> This causes a problem in LoadNode::Value for the new LoadVectorMasked nodes. LoadNode::Value sees that the load will always load a zero - and will try to replace itself with a zero constant. That doesn't work for the LoadVectorMaskedNodes currently.
> 
> This patch adds a check to the zero-optimization to pass on vector types.
> 
> This patch is currently missing a new test. Since we are nearing the end of bugfixing in JDK16 I decided to publish the fix first so that any discussion of the fix can be had now.

That looks good to me!

-------------

Marked as reviewed by chagedorn (Reviewer).

PR: https://git.openjdk.java.net/jdk16/pull/105


More information about the hotspot-compiler-dev mailing list