On Thu, 12 Feb 2026 19:49:48 GMT, Matias Saavedra Silva <[email protected]> 
wrote:

> 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.

src/hotspot/share/classfile/javaClasses.cpp line 1273:

> 1271:     }
> 1272:   } else {
> 1273:     ObjArrayKlass* objarray_k = (ObjArrayKlass*)as_Klass(m);

This is the else clause of the `if (!k->is_array_klass())` , which means that k 
is either and objArrayKlass (or sub-type) or a typeArrayKlass. How is it safe 
to unconditionally cast to objArrayKlass?

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

PR Review Comment: 
https://git.openjdk.org/valhalla/pull/2095#discussion_r2801117216

Reply via email to