< prev index next >
src/hotspot/share/oops/instanceKlass.cpp
Print this page
*** 2198,2208 ****
// Use load_acquire due to competing with inserts
Klass* impl = Atomic::load_acquire(adr_implementor());
if (impl != NULL && !impl->is_loader_alive()) {
// NULL this field, might be an unloaded klass or NULL
Klass* volatile* klass = adr_implementor();
! if (Atomic::cmpxchg((Klass*)NULL, klass, impl) == impl) {
// Successfully unlinking implementor.
if (log_is_enabled(Trace, class, unload)) {
ResourceMark rm;
log_trace(class, unload)("unlinking class (implementor): %s", impl->external_name());
}
--- 2198,2208 ----
// Use load_acquire due to competing with inserts
Klass* impl = Atomic::load_acquire(adr_implementor());
if (impl != NULL && !impl->is_loader_alive()) {
// NULL this field, might be an unloaded klass or NULL
Klass* volatile* klass = adr_implementor();
! if (Atomic::cmpxchg(klass, impl, (Klass*)NULL) == impl) {
// Successfully unlinking implementor.
if (log_is_enabled(Trace, class, unload)) {
ResourceMark rm;
log_trace(class, unload)("unlinking class (implementor): %s", impl->external_name());
}
< prev index next >