< prev index next >
src/hotspot/share/classfile/systemDictionaryShared.cpp
Print this page
@@ -801,11 +801,11 @@
SystemDictionary::is_system_class_loader(class_loader())) ||
(ik->is_shared_platform_class() &&
SystemDictionary::is_platform_class_loader(class_loader()))) {
Handle protection_domain =
SystemDictionaryShared::init_security_info(class_loader, ik, CHECK_NULL);
- return load_shared_class(ik, class_loader, protection_domain, THREAD);
+ return load_shared_class(ik, class_loader, protection_domain, NULL, THREAD);
}
}
return NULL;
}
@@ -871,17 +871,19 @@
if (!record->matches(clsfile_size, clsfile_crc32)) {
return NULL;
}
return acquire_class_for_current_thread(record->_klass, class_loader,
- protection_domain, THREAD);
+ protection_domain, cfs,
+ THREAD);
}
InstanceKlass* SystemDictionaryShared::acquire_class_for_current_thread(
InstanceKlass *ik,
Handle class_loader,
Handle protection_domain,
+ const ClassFileStream *cfs,
TRAPS) {
ClassLoaderData* loader_data = ClassLoaderData::class_loader_data(class_loader());
{
MutexLocker mu(SharedDictionary_lock, THREAD);
@@ -898,11 +900,12 @@
// No longer holding SharedDictionary_lock
// No need to lock, as <ik> can be held only by a single thread.
loader_data->add_class(ik);
// Load and check super/interfaces, restore unsharable info
- InstanceKlass* shared_klass = load_shared_class(ik, class_loader, protection_domain, THREAD);
+ InstanceKlass* shared_klass = load_shared_class(ik, class_loader, protection_domain,
+ cfs, THREAD);
if (shared_klass == NULL || HAS_PENDING_EXCEPTION) {
// TODO: clean up <ik> so it can be used again
return NULL;
}
< prev index next >