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

Vladimir Ivanov vlivanov at openjdk.java.net
Tue Jan 12 22:00:23 UTC 2021


On Tue, 12 Jan 2021 21:42:23 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:
> 
>   Make check a bool

Even better!

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

Marked as reviewed by vlivanov (Reviewer).

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


More information about the hotspot-compiler-dev mailing list