--- old/src/hotspot/share/oops/klass.cpp 2019-03-27 16:10:39.687191358 +0100 +++ new/src/hotspot/share/oops/klass.cpp 2019-03-27 16:10:39.379186262 +0100 @@ -631,29 +631,29 @@ } #endif // INCLUDE_CDS_JAVA_HEAP -Klass* Klass::array_klass_or_null(int rank) { +Klass* Klass::array_klass_or_null(ArrayStorageProperties storage_props, int rank) { EXCEPTION_MARK; // No exception can be thrown by array_klass_impl when called with or_null == true. // (In anycase, the execption mark will fail if it do so) - return array_klass_impl(true, rank, THREAD); + return array_klass_impl(storage_props, true, rank, THREAD); } -Klass* Klass::array_klass_or_null() { +Klass* Klass::array_klass_or_null(ArrayStorageProperties storage_props) { EXCEPTION_MARK; // No exception can be thrown by array_klass_impl when called with or_null == true. // (In anycase, the execption mark will fail if it do so) - return array_klass_impl(true, THREAD); + return array_klass_impl(storage_props, true, THREAD); } -Klass* Klass::array_klass_impl(bool or_null, int rank, TRAPS) { +Klass* Klass::array_klass_impl(ArrayStorageProperties storage_props, bool or_null, int rank, TRAPS) { fatal("array_klass should be dispatched to InstanceKlass, ObjArrayKlass or TypeArrayKlass"); return NULL; } -Klass* Klass::array_klass_impl(bool or_null, TRAPS) { +Klass* Klass::array_klass_impl(ArrayStorageProperties storage_props, bool or_null, TRAPS) { fatal("array_klass should be dispatched to InstanceKlass, ObjArrayKlass or TypeArrayKlass"); return NULL; } @@ -741,6 +741,16 @@ if (WizardMode) { // print header obj->mark()->print_on(st); + ArrayStorageProperties props = obj->array_storage_properties(); + if (props.value() != 0) { + st->print(" - array storage properties: "); + if (props.is_flattened()) { + st->print(" flat"); + } + if (props.is_null_free()) { + st->print(" non nullable"); + } + } } // print class