On Fri, 9 May 2025 19:13:50 GMT, Frederic Parain <[email protected]> wrote:
> Since the removal of Q-types and the notion that nullability was not part of > the Java type, there was an awkward situation because nullable arrays of > value types and null free arrays of value types had each a different Java > mirror when they were in fact supposed to have the same Java type. > In order to accommodate to the new situation, that arrays can have properties > (nullability, flatness, atomicity, etc.) that are not part of their Java > type, the 1-1 relationship between the *ArrayKlass and the Java mirror must > be broken. > The proposed solution is to dedicate one instance of ObjArrayKlass to > represent the Java type of the array in the JVM, and have this instance being > the counterpart of the Java mirror of the array, and have several instances > of RefArrayKlass and FlatArrayKlass that represent the refinements of the > Java array type. Each RefArrayKlass/FlatArrayKlass encodes the characteristic > of a Java array for a given element type and a set of properties. Makes sense - found a typo. Are you going to check this in with UseNewCode2 or you could add a global flag for this because I think you're going to need a new one? src/hotspot/share/oops/refArrayKlass.hpp line 33: > 31: class ClassLoaderData; > 32: > 33: // RefjArrayKlass is the klass for arrays of references you have an extra j in this. src/hotspot/share/oops/refArrayKlass.hpp line 45: > 43: // Constructor > 44: RefArrayKlass(int n, Klass *element_klass, Symbol *name, bool > null_free); > 45: static RefArrayKlass *allocate(ClassLoaderData *loader_data, int n, > Klass *k, Symbol *name, bool null_free, TRAPS); The stars go with the types, ie ClassLoaderData* loader_data. ------------- PR Review: https://git.openjdk.org/valhalla/pull/1452#pullrequestreview-2829768901 PR Review Comment: https://git.openjdk.org/valhalla/pull/1452#discussion_r2082556067 PR Review Comment: https://git.openjdk.org/valhalla/pull/1452#discussion_r2082556373
