> 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 with a new target base due to a 
merge or a rebase. The incremental webrev excludes the unrelated changes 
brought in by the merge/rebase. The pull request contains 11 additional commits 
since the last revision:

 - Add test for void.class as well
 - Improve comments
 - Merge branch 'lworld' into JDK-8382226
 - Update
 - Merge branch 'lworld' into JDK-8382226
 - Fix endless deopts with -XX:-UseArrayFlattening
 - Update
 - improve checks and further refactor exclude_flat to make it easier to read
 - fix tklass
 - Review Quan-Anh
 - ... and 1 more: https://git.openjdk.org/valhalla/compare/6613d443...20cd9217

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

Changes:
  - all: https://git.openjdk.org/valhalla/pull/2569/files
  - new: https://git.openjdk.org/valhalla/pull/2569/files/e3b4f882..20cd9217

Webrevs:
 - full: https://webrevs.openjdk.org/?repo=valhalla&pr=2569&range=04
 - incr: https://webrevs.openjdk.org/?repo=valhalla&pr=2569&range=03-04

  Stats: 16941 lines in 543 files changed: 13205 ins; 1794 del; 1942 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

Reply via email to