equal
deleted
inserted
replaced
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 } |