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
--- 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();
}
}