The new instruction flag `OmitChecksFlag` (introduced by
If `OmitChecksFlag` is set, all flags (including the `unaligned` flag) will be cleared before generating the `LIR_OpArrayCopy` node.
This may lead to incorrect selection of the arraycopy function when `unaligned` flag for arraycopy is set.
We observed performance regression on P550 SBC through the corresponding JMH tests when COH is enabled.
Without COH:
```
Benchmark (size) Mode Cnt Score Error Units
ArrayClone.byteArraycopy 0 avgt 15 50.854 ± 0.379 ns/op
ArrayClone.byteArraycopy 10 avgt 15 74.294 ± 0.449 ns/op
ArrayClone.byteArraycopy 100 avgt 15 81.847 ± 0.082 ns/op
ArrayClone.byteArraycopy 1000 avgt 15 480.106 ± 0.369 ns/op
ArrayClone.byteClone 0 avgt 15 90.146 ± 0.299 ns/op
ArrayClone.byteClone 10 avgt 15 130.525 ± 0.384 ns/op
ArrayClone.byteClone 100 avgt 15 251.942 ± 0.122 ns/op
ArrayClone.byteClone 1000 avgt 15 407.580 ± 0.318 ns/op
ArrayClone.intArraycopy 0 avgt 15 49.984 ± 0.436 ns/op
ArrayClone.intArraycopy 10 avgt 15 76.302 ± 1.388 ns/op
ArrayClone.intArraycopy 100 avgt 15 267.487 ± 0.329 ns/op
ArrayClone.intArraycopy 1000 avgt 15 1157.444 ± 1.588 ns/op
ArrayClone.intClone 0 avgt 15 90.130 ± 0.257 ns/op
ArrayClone.intClone 10 avgt 15 183.619 ± 0.588 ns/op
ArrayClone.intClone 100 avgt 15 296.491 ± 0.246 ns/op
ArrayClone.intClone 1000 avgt 15 828.695 ± 1.501 ns/op
```
With COH:
```
Benchmark (size) Mode Cnt Score Error Units
ArrayClone.byteArraycopy 0 avgt 15 50.667 ± 0.622 ns/op
ArrayClone.byteArraycopy 10 avgt 15 76.917 ± 0.914 ns/op
ArrayClone.byteArraycopy 100 avgt 15 82.928 ± 0.056 ns/op
ArrayClone.byteArraycopy 1000 avgt 15 485.806 ± 0.653 ns/op
ArrayClone.byteClone 0 avgt 15 90.417 ± 1.059 ns/op
ArrayClone.byteClone 10 avgt 15 1634.691 ± 9.870 ns/op
ArrayClone.byteClone 100 avgt 15 18637.149 ± 30.985 ns/op
ArrayClone.byteClone 1000 avgt 15 193437.253 ± 435.771 ns/op
ArrayClone.intArraycopy 0 avgt 15 50.475 ± 0.545 ns/op
ArrayClone.intArraycopy 10 avgt 15 77.515 ± 0.958 ns/op
ArrayClone.intArraycopy 100 avgt 15 264.586 ± 0.237 ns/op
ArrayClone.intArraycopy 1000 avgt 15 1160.459 ± 1.394 ns/op
ArrayClone.intClone 0 avgt 15 90.776 ± 0.309 ns/op
ArrayClone.intClone 10 avgt 15 7794.589 ± 13.752 ns/op
ArrayClone.intClone 100 avgt 15 77303.097 ± 154.991 ns/op
ArrayClone.intClone 1000 avgt 15 773291.729 ± 1505.788 ns/op
```
- caused by
-
JDK-8302850 Implement C1 clone intrinsic that reuses arraycopy code for primitive arrays
-
- Resolved
-
-
JDK-8333154 RISC-V: Add support for primitive array C1 clone intrinsic
-
- Resolved
-
- links to
-
Review(master) openjdk/jdk/25976