Different array layouts result in distinct array klass metadata which are 
stored in a linked list with the base ObjArrayKlass acting as the head. 
Multiple layouts are currently uncommon, so this assert was sufficient:

`assert(objarray_k == k || objarray_k->next_refined_array_klass() == k) failed: 
must be`

This assert is not correct since `k` could refer to another refined array klass 
further down the linked list. This patch corrects this assert by adding a find 
method to iterate through the linked list in case there are multiple layouts 
for the same type. A new test was added to catch this failure. Verified with 
tier 1-5 tests.

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

Commit messages:
 - Added new test case
 - Fixed small bug in filemap
 - 8377791: [lworld] Assert in java_lang_Class::restore_archived_mirror

Changes: https://git.openjdk.org/valhalla/pull/2095/files
  Webrev: https://webrevs.openjdk.org/?repo=valhalla&pr=2095&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8377791
  Stats: 152 lines in 6 files changed: 149 ins; 0 del; 3 mod
  Patch: https://git.openjdk.org/valhalla/pull/2095.diff
  Fetch: git fetch https://git.openjdk.org/valhalla.git pull/2095/head:pull/2095

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

Reply via email to