< prev index next >
src/share/vm/classfile/systemDictionary.cpp
Print this page
@@ -496,11 +496,11 @@
assert_lock_strong(SystemDictionary_lock);
bool calledholdinglock
= ObjectSynchronizer::current_thread_holds_lock((JavaThread*)THREAD, lockObject);
assert(calledholdinglock,"must hold lock for notify");
- assert((!(lockObject() == _system_loader_lock_obj) && !is_parallelCapable(lockObject)), "unexpected double_lock_wait");
+ assert((!(oopDesc::bs()->write_barrier(lockObject()) == oopDesc::bs()->write_barrier(_system_loader_lock_obj)) && !is_parallelCapable(lockObject)), "unexpected double_lock_wait");
ObjectSynchronizer::notifyall(lockObject, THREAD);
intptr_t recursions = ObjectSynchronizer::complete_exit(lockObject, THREAD);
SystemDictionary_lock->wait();
SystemDictionary_lock->unlock();
ObjectSynchronizer::reenter(lockObject, recursions, THREAD);
@@ -1529,13 +1529,13 @@
return k;
}
Handle SystemDictionary::compute_loader_lock_object(Handle class_loader, TRAPS) {
// If class_loader is NULL we synchronize on _system_loader_lock_obj
if (class_loader.is_null()) {
- return Handle(THREAD, _system_loader_lock_obj);
+ return Handle(THREAD, oopDesc::bs()->write_barrier(_system_loader_lock_obj));
} else {
- return class_loader;
+ return Handle(THREAD, oopDesc::bs()->write_barrier(class_loader()));
}
}
// This method is added to check how often we have to wait to grab loader
// lock. The results are being recorded in the performance counters defined in
@@ -1550,11 +1550,11 @@
if (ObjectSynchronizer::query_lock_ownership((JavaThread*)THREAD, loader_lock)
== ObjectSynchronizer::owner_other) {
// contention will likely happen, so increment the corresponding
// contention counter.
- if (loader_lock() == _system_loader_lock_obj) {
+ if (oopDesc::bs()->write_barrier(loader_lock()) == oopDesc::bs()->write_barrier(_system_loader_lock_obj)) {
ClassLoader::sync_systemLoaderLockContentionRate()->inc();
} else {
ClassLoader::sync_nonSystemLoaderLockContentionRate()->inc();
}
}
@@ -2677,6 +2677,5 @@
class_loader->klass() : (Klass*)NULL);
event.commit();
}
#endif // INCLUDE_TRACE
}
-
< prev index next >