< prev index next >
src/share/vm/classfile/moduleEntry.cpp
Print this page
*** 78,100 ****
version->increment_refcount();
}
}
// Returns the shared ProtectionDomain
! Handle ModuleEntry::shared_protection_domain() {
! return Handle(Thread::current(), JNIHandles::resolve(_pd));
}
// Set the shared ProtectionDomain atomically
void ModuleEntry::set_shared_protection_domain(ClassLoaderData *loader_data,
Handle pd_h) {
// Create a handle for the shared ProtectionDomain and save it atomically.
! // If someone beats us setting the _pd cache, the created handle is destroyed.
! jobject obj = loader_data->add_handle(pd_h);
! if (Atomic::cmpxchg_ptr(obj, &_pd, NULL) != NULL) {
! loader_data->remove_handle_unsafe(obj);
! }
}
// Returns true if this module can read module m
bool ModuleEntry::can_read(ModuleEntry* m) const {
assert(m != NULL, "No module to lookup in this module's reads list");
--- 78,97 ----
version->increment_refcount();
}
}
// Returns the shared ProtectionDomain
! oop ModuleEntry::shared_protection_domain() {
! return _pd.resolve();
}
// Set the shared ProtectionDomain atomically
void ModuleEntry::set_shared_protection_domain(ClassLoaderData *loader_data,
Handle pd_h) {
// Create a handle for the shared ProtectionDomain and save it atomically.
! // init_handle_locked checks if someone beats us setting the _pd cache.
! loader_data->init_handle_locked(_pd, pd_h);
}
// Returns true if this module can read module m
bool ModuleEntry::can_read(ModuleEntry* m) const {
assert(m != NULL, "No module to lookup in this module's reads list");
< prev index next >