On Fri, 19 Jun 2026 12:34:36 GMT, Christian Hagedorn <[email protected]> wrote:
> 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). This pull request has now been integrated. Changeset: 73d93a28 Author: Christian Hagedorn <[email protected]> URL: https://git.openjdk.org/valhalla/commit/73d93a286199033f3325fe6c8d290b0e6636951c Stats: 649 lines in 4 files changed: 624 ins; 13 del; 12 mod 8382226: [lworld] C2: Fix _copyOf/_copyOfRange intrinsic for flat abstract value class arrays Reviewed-by: qamai, thartmann ------------- PR: https://git.openjdk.org/valhalla/pull/2569
