> The provided test cases fail when inlining the `Array.copyOf/copyOfRange()` > intrinsics where the source array is flat and from an abstract value class. > > The current code checks whether the source array or the destination array > klass contain oops by assuming that a flat value class array is always > concrete and thus an `InlineKlass` (i.e. can call `inline_klass()`). However, > we could also have abstract value class arrays that are known to be flat (see > test cases). This leads to a cast assertion failure because abstract value > classes are represented by an `InstanceKlass` and not an `InlineKlass`. > > To fix this, I added a simple bailout when detecting an abstract flat value > class array. This is a conservative correctness fix and should be revisited > again post-Valhalla-integration. We have > [JDK-8251971](https://bugs.openjdk.org/browse/JDK-8251971) in place for that > which should also tackle other issues around the arraycopy intrinsics and > also address performance problems. > > Thanks, > Christian > > --------- > - [x] I confirm that I make this contribution in accordance with the [OpenJDK > Interim AI Policy](https://openjdk.org/legal/ai).
Christian Hagedorn has updated the pull request incrementally with one additional commit since the last revision: improve checks and further refactor exclude_flat to make it easier to read ------------- Changes: - all: https://git.openjdk.org/valhalla/pull/2569/files - new: https://git.openjdk.org/valhalla/pull/2569/files/b1de11c7..e3b4f882 Webrevs: - full: https://webrevs.openjdk.org/?repo=valhalla&pr=2569&range=03 - incr: https://webrevs.openjdk.org/?repo=valhalla&pr=2569&range=02-03 Stats: 23 lines in 1 file changed: 8 ins; 4 del; 11 mod Patch: https://git.openjdk.org/valhalla/pull/2569.diff Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2569/head:pull/2569 PR: https://git.openjdk.org/valhalla/pull/2569
