[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