< 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 >