src/hotspot/share/oops/instanceKlass.cpp
changeset 59252 623722a6aeb9
parent 59247 56bf71d64d51
equal deleted inserted replaced
59251:4cbfa5077d68 59252:623722a6aeb9
  2198       // Use load_acquire due to competing with inserts
  2198       // Use load_acquire due to competing with inserts
  2199       Klass* impl = Atomic::load_acquire(adr_implementor());
  2199       Klass* impl = Atomic::load_acquire(adr_implementor());
  2200       if (impl != NULL && !impl->is_loader_alive()) {
  2200       if (impl != NULL && !impl->is_loader_alive()) {
  2201         // NULL this field, might be an unloaded klass or NULL
  2201         // NULL this field, might be an unloaded klass or NULL
  2202         Klass* volatile* klass = adr_implementor();
  2202         Klass* volatile* klass = adr_implementor();
  2203         if (Atomic::cmpxchg((Klass*)NULL, klass, impl) == impl) {
  2203         if (Atomic::cmpxchg(klass, impl, (Klass*)NULL) == impl) {
  2204           // Successfully unlinking implementor.
  2204           // Successfully unlinking implementor.
  2205           if (log_is_enabled(Trace, class, unload)) {
  2205           if (log_is_enabled(Trace, class, unload)) {
  2206             ResourceMark rm;
  2206             ResourceMark rm;
  2207             log_trace(class, unload)("unlinking class (implementor): %s", impl->external_name());
  2207             log_trace(class, unload)("unlinking class (implementor): %s", impl->external_name());
  2208           }
  2208           }