< 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 >