--- old/src/share/vm/utilities/workgroup.cpp 2014-11-06 12:39:46.308986000 -0800 +++ new/src/share/vm/utilities/workgroup.cpp 2014-11-06 12:39:45.688930000 -0800 @@ -46,7 +46,8 @@ // Other initialization. _monitor = new Monitor(/* priority */ Mutex::leaf, /* name */ "WorkGroup monitor", - /* allow_vm_block */ are_GC_task_threads); + /* allow_vm_block */ are_GC_task_threads, + Monitor::_safepoint_check_sometimes); assert(monitor() != NULL, "Failed to allocate monitor"); _terminate = false; _task = NULL; @@ -378,12 +379,13 @@ // *** WorkGangBarrierSync WorkGangBarrierSync::WorkGangBarrierSync() - : _monitor(Mutex::safepoint, "work gang barrier sync", true), + : _monitor(Mutex::safepoint, "work gang barrier sync", true, + Monitor::_safepoint_check_never), _n_workers(0), _n_completed(0), _should_reset(false), _aborted(false) { } WorkGangBarrierSync::WorkGangBarrierSync(uint n_workers, const char* name) - : _monitor(Mutex::safepoint, name, true), + : _monitor(Mutex::safepoint, name, true, Monitor::_safepoint_check_never), _n_workers(n_workers), _n_completed(0), _should_reset(false), _aborted(false) { }