< prev index next >
src/hotspot/share/oops/instanceKlass.cpp
Print this page
*** 1121,1131 ****
// Step 8
// Initialize classes of flattenable fields
{
for (AllFieldStream fs(this); !fs.done(); fs.next()) {
if (fs.is_flattenable()) {
! InstanceKlass* field_klass = InstanceKlass::cast(this->get_value_field_klass(fs.index()));
field_klass->initialize(CHECK);
}
}
}
--- 1121,1140 ----
// Step 8
// Initialize classes of flattenable fields
{
for (AllFieldStream fs(this); !fs.done(); fs.next()) {
if (fs.is_flattenable()) {
! 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);
}
}
}
< prev index next >