--- old/src/hotspot/share/oops/instanceKlass.cpp 2019-08-07 12:43:46.000000000 -0400 +++ new/src/hotspot/share/oops/instanceKlass.cpp 2019-08-07 12:43:45.000000000 -0400 @@ -1123,7 +1123,16 @@ { for (AllFieldStream fs(this); !fs.done(); fs.next()) { if (fs.is_flattenable()) { - InstanceKlass* field_klass = InstanceKlass::cast(this->get_value_field_klass(fs.index())); + Klass* klass = this->get_value_field_klass_or_null(fs.index()); + if (klass == NULL) { + klass = SystemDictionary::resolve_or_fail(fs.signature()->fundamental_name(THREAD), Handle(THREAD, class_loader()), + Handle(THREAD, protection_domain()), true, CHECK); + this->set_value_field_klass(fs.index(), InstanceKlass::cast(klass)); + } + if (!klass->is_value()) { + THROW(vmSymbols::java_lang_IncompatibleClassChangeError()); + } + InstanceKlass* field_klass = InstanceKlass::cast(klass); field_klass->initialize(CHECK); } }