diff --git a/src/hotspot/share/ci/ciInstanceKlass.cpp b/src/hotspot/share/ci/ciInstanceKlass.cpp index 353bba95bed..24eea62a0b8 100644 --- a/src/hotspot/share/ci/ciInstanceKlass.cpp +++ b/src/hotspot/share/ci/ciInstanceKlass.cpp @@ -903,18 +903,23 @@ void StaticFieldPrinter::do_field_helper(fieldDescriptor* fd, oop mirror, bool i FlatArrayKlass* klass = ((flatArrayOop)oa)->klass(); LayoutKind lk = klass->layout_kind(); _out->print(" flat"); - if (LayoutKindHelper::is_atomic_flat(lk)) { - _out->print(" atomic"); - } else { - _out->print(" non-atomic"); - } if (LayoutKindHelper::is_nullable_flat(lk)) { _out->print(" nullable"); } else { _out->print(" null-free"); } + if (LayoutKindHelper::is_atomic_flat(lk)) { + _out->print(" atomic"); + } else { + _out->print(" non-atomic"); + } } else { _out->print(" ref"); + if (oa->klass()->is_null_free_array_klass()) { + _out->print(" nullable"); + } else { + _out->print(" null-free"); + } } const char* klass_name = value->klass()->name()->as_quoted_ascii(); _out->print(" %s", klass_name); diff --git a/src/hotspot/share/ci/ciReplay.cpp b/src/hotspot/share/ci/ciReplay.cpp index 5de0e328931..e58a878799e 100644 --- a/src/hotspot/share/ci/ciReplay.cpp +++ b/src/hotspot/share/ci/ciReplay.cpp @@ -514,7 +514,6 @@ class CompileReplay : public StackObj { return k; } obj = ciReplay::obj_field(obj, field); - // TODO 8350865 I think we need to handle null-free/flat arrays here if (obj != nullptr && obj->is_objArray()) { objArrayOop arr = oop_cast(obj); int index = parse_int("index"); @@ -1141,14 +1140,17 @@ class CompileReplay : public StackObj { field_signature[1] == JVM_SIGNATURE_CLASS) { const char* flatness = parse_string(); if (strcmp(flatness, "ref") == 0) { + const char* nullability = parse_string(); + bool null_restricted = (strcmp(nullability, "null-free") == 0); Klass* actual_array_klass = parse_klass(CHECK_(true)); Klass* kelem = ObjArrayKlass::cast(actual_array_klass)->element_klass(); - value = oopFactory::new_refArray(kelem, length, CHECK_(true)); + ArrayProperties props = ArrayProperties::Default().with_non_atomic(false).with_null_restricted(null_restricted); + value = oopFactory::new_refArray(kelem, length, props, CHECK_(true)); } else if (strcmp(flatness, "flat") == 0) { - const char* atomicity = parse_string(); const char* nullability = parse_string(); - bool non_atomic = (strcmp(atomicity, "non-atomic") == 0); + const char* atomicity = parse_string(); bool null_restricted = (strcmp(nullability, "null-free") == 0); + bool non_atomic = (strcmp(atomicity, "non-atomic") == 0); Klass* actual_array_klass = parse_klass(CHECK_(true)); Klass* kelem = ObjArrayKlass::cast(actual_array_klass)->element_klass(); ArrayProperties props = ArrayProperties::Default().with_non_atomic(non_atomic).with_null_restricted(null_restricted);