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

Nils Eliasson neliasso at openjdk.java.net
Mon Jan 11 23:00:08 UTC 2021


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.

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

Commit messages:
 - LoadVectorMasked have no zero con

Changes: https://git.openjdk.java.net/jdk16/pull/105/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk16&pr=105&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8258272
  Stats: 3 lines in 1 file changed: 1 ins; 0 del; 2 mod
  Patch: https://git.openjdk.java.net/jdk16/pull/105.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk16 pull/105/head:pull/105

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


More information about the hotspot-compiler-dev mailing list