8042570: Excessive number of tests timing out on nightly testing due to fix for 8040798
authoranoll
Wed, 07 May 2014 22:06:42 +0200
changeset 24350 8d8c1012dacd
parent 24349 d8f40e5b392d
child 24351 61b33cc6d3cf
8042570: Excessive number of tests timing out on nightly testing due to fix for 8040798 Summary: Remove unnecessary lock in CompileBroker::mark_on_stack() that causes the deadlock Reviewed-by: kvn, dcubed
hotspot/src/share/vm/compiler/compileBroker.cpp
--- a/hotspot/src/share/vm/compiler/compileBroker.cpp	Fri May 02 14:53:06 2014 +0200
+++ b/hotspot/src/share/vm/compiler/compileBroker.cpp	Wed May 07 22:06:42 2014 +0200
@@ -1062,15 +1062,16 @@
 
 /**
  * Set the methods on the stack as on_stack so that redefine classes doesn't
- * reclaim them
+ * reclaim them. This method is executed at a safepoint.
  */
 void CompileBroker::mark_on_stack() {
+  assert(SafepointSynchronize::is_at_safepoint(), "sanity check");
+  // Since we are at a safepoint, we do not need a lock to access
+  // the compile queues.
   if (_c2_compile_queue != NULL) {
-    MutexLocker locker(_c2_compile_queue->lock());
     _c2_compile_queue->mark_on_stack();
   }
   if (_c1_compile_queue != NULL) {
-    MutexLocker locker(_c1_compile_queue->lock());
     _c1_compile_queue->mark_on_stack();
   }
 }