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

Christian Hagedorn chagedorn at openjdk.java.net
Tue Jan 12 18:24:00 UTC 2021


On Tue, 12 Jan 2021 16:35:29 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.
>
> Nils Eliasson has updated the pull request incrementally with one additional commit since the last revision:
> 
>   add test and update fix

Looks good!

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

Marked as reviewed by chagedorn (Reviewer).

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


More information about the hotspot-compiler-dev mailing list