< prev index next >
src/hotspot/share/classfile/classLoaderData.cpp
Print this page
rev 50745 : imported patch remove_in_concurrent_root
*** 830,842 ****
void ClassLoaderData::remove_handle(OopHandle h) {
assert(!is_unloading(), "Do not remove a handle for a CLD that is unloading");
oop* ptr = h.ptr_raw();
if (ptr != NULL) {
assert(_handles.owner_of(ptr), "Got unexpected handle " PTR_FORMAT, p2i(ptr));
! // This root is not walked in safepoints, and hence requires an appropriate
! // decorator that e.g. maintains the SATB invariant in SATB collectors.
! NativeAccess<IN_CONCURRENT_ROOT>::oop_store(ptr, oop(NULL));
}
}
void ClassLoaderData::init_handle_locked(OopHandle& dest, Handle h) {
MutexLockerEx ml(metaspace_lock(), Mutex::_no_safepoint_check_flag);
--- 830,840 ----
void ClassLoaderData::remove_handle(OopHandle h) {
assert(!is_unloading(), "Do not remove a handle for a CLD that is unloading");
oop* ptr = h.ptr_raw();
if (ptr != NULL) {
assert(_handles.owner_of(ptr), "Got unexpected handle " PTR_FORMAT, p2i(ptr));
! NativeAccess<>::oop_store(ptr, oop(NULL));
}
}
void ClassLoaderData::init_handle_locked(OopHandle& dest, Handle h) {
MutexLockerEx ml(metaspace_lock(), Mutex::_no_safepoint_check_flag);
< prev index next >