< prev index next >

src/hotspot/share/classfile/classFileParser.cpp

Print this page

        

*** 4582,4599 **** for (int i = 0; i < length; i++) { defining_loader_data->record_dependency(local_interfaces->at(i), CHECK); } } ! for (FieldStream st((InstanceKlass*)defined_klass, false, false); !st.eos(); st.next()) { ! Symbol* signature = st.signature(); ! if (signature->starts_with("Q")) { ! Klass* klass = SystemDictionary::resolve_or_fail(signature, ! Handle(THREAD, defined_klass->class_loader()), ! Handle(THREAD, defined_klass->protection_domain()), true, CHECK); ! assert(klass != NULL, "Sanity check"); ! assert(klass->access_flags().is_value_type(), "Value type expected"); defining_loader_data->record_dependency(klass, CHECK); } } } } --- 4582,4594 ---- for (int i = 0; i < length; i++) { defining_loader_data->record_dependency(local_interfaces->at(i), CHECK); } } ! for(int i = 0; i < defined_klass->java_fields_count(); i++) { ! if (defined_klass->field_signature(i)->starts_with("Q") && (((defined_klass->field_access_flags(i) & JVM_ACC_STATIC)) == 0)) { ! const Klass* klass = defined_klass->get_value_field_klass(i); defining_loader_data->record_dependency(klass, CHECK); } } } }
*** 5738,5761 **** // We won a potential race JvmtiExport::add_default_read_edges(module_handle, THREAD); } } - // Update the loader_data graph. - record_defined_class_dependencies(ik, CHECK); - for(int i = 0; i < ik->java_fields_count(); i++) { ! if (ik->field_signature(i)->starts_with("Q")) { Klass* klass = SystemDictionary::resolve_or_fail(ik->field_signature(i), Handle(THREAD, ik->class_loader()), Handle(THREAD, ik->protection_domain()), true, CHECK); assert(klass != NULL, "Sanity check"); assert(klass->access_flags().is_value_type(), "Value type expected"); ik->set_value_field_klass(i, klass); } } ClassLoadingService::notify_class_loaded(ik, false /* not shared class */); if (!is_internal()) { if (log_is_enabled(Info, class, load)) { ResourceMark rm; --- 5733,5756 ---- // We won a potential race JvmtiExport::add_default_read_edges(module_handle, THREAD); } } for(int i = 0; i < ik->java_fields_count(); i++) { ! if (ik->field_signature(i)->starts_with("Q") && (((ik->field_access_flags(i) & JVM_ACC_STATIC)) == 0)) { Klass* klass = SystemDictionary::resolve_or_fail(ik->field_signature(i), Handle(THREAD, ik->class_loader()), Handle(THREAD, ik->protection_domain()), true, CHECK); assert(klass != NULL, "Sanity check"); assert(klass->access_flags().is_value_type(), "Value type expected"); ik->set_value_field_klass(i, klass); } } + // Update the loader_data graph. + record_defined_class_dependencies(ik, CHECK); + ClassLoadingService::notify_class_loaded(ik, false /* not shared class */); if (!is_internal()) { if (log_is_enabled(Info, class, load)) { ResourceMark rm;
< prev index next >