This patch fixes various issues found with abstract value classes where the 
assumption was that we have a concrete value class but we actually could have 
an abstract value class as well.

The main issue found is that a concrete value class is represented with an 
`InlineKlass` while an abstract value class is represented with an 
`InstanceKlass`. Therefore, we cannot cast the latter to `InlineKlass`. While 
working on this, I checked all `is_inlinetype()` uses and found more issues. I 
also found issues around the `Arrays.copyOf/copyOfRange` intrinsic but left it 
as follow-up work and filed 
[JDK-8382226](https://bugs.openjdk.org/browse/JDK-8382226) for it. 

Here is a list of fixes included in this patch, together with corresponding 
tests:
1. `GraphKit::get_layout_helper()`: Wrong old assumption that nullable implies 
not-flat.
2. Checking whether we have a load/store from/to a field of an empty value 
class:
a. C1: `GraphBuilder::access_field()`, for static and instance field.
b. C2: `Parse::do_get_xxx()`, for loading
c. C2: `Parse::do_set_xxx()`, for storing
3. `arraycopy` instrinsic: Not bailing out when src or dest is a flat abstract 
value class array - in this case we don't know the layout. We currently hit an 
assert due to an invalid cast, assuming concrete value classes when an array is 
flat.

Additional changes:
- Added some more asserts
- Some small code cleanups

Thanks,
Christian

---------
- [x] I confirm that I make this contribution in accordance with the [OpenJDK 
Interim AI Policy](https://openjdk.org/legal/ai).

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

Commit messages:
 - more
 - more changes to macroArrayCopy.cpp
 - update macroArrayCopy.cpp
 - fixes

Changes: https://git.openjdk.org/valhalla/pull/2325/files
  Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2325&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8380525
  Stats: 313 lines in 8 files changed: 260 ins; 6 del; 47 mod
  Patch: https://git.openjdk.org/valhalla/pull/2325.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2325/head:pull/2325

PR: https://git.openjdk.org/valhalla/pull/2325

Reply via email to