--- old/src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.cpp 2014-11-06 12:39:38.449667000 -0800 +++ new/src/share/vm/gc_implementation/parallelScavenge/gcTaskManager.cpp 2014-11-06 12:39:37.526157000 -0800 @@ -400,7 +400,8 @@ assert(workers() != 0, "no workers"); _monitor = new Monitor(Mutex::barrier, // rank "GCTaskManager monitor", // name - Mutex::_allow_vm_block_flag); // allow_vm_block + Mutex::_allow_vm_block_flag, // allow_vm_block + Monitor::_safepoint_check_never); // The queue for the GCTaskManager must be a CHeapObj. GCTaskQueue* unsynchronized_queue = GCTaskQueue::create_on_c_heap(); _queue = SynchronizedGCTaskQueue::create(unsynchronized_queue, lock()); @@ -1125,8 +1126,9 @@ } else { result = new Monitor(Mutex::barrier, // rank "MonitorSupply monitor", // name - Mutex::_allow_vm_block_flag); // allow_vm_block - } + Mutex::_allow_vm_block_flag, // allow_vm_block + Monitor::_safepoint_check_never); + } guarantee(result != NULL, "shouldn't return NULL"); assert(!result->is_locked(), "shouldn't be locked"); // release lock().