398 tty->print_cr("GCTaskManager::initialize: workers: %u", workers()); |
398 tty->print_cr("GCTaskManager::initialize: workers: %u", workers()); |
399 } |
399 } |
400 assert(workers() != 0, "no workers"); |
400 assert(workers() != 0, "no workers"); |
401 _monitor = new Monitor(Mutex::barrier, // rank |
401 _monitor = new Monitor(Mutex::barrier, // rank |
402 "GCTaskManager monitor", // name |
402 "GCTaskManager monitor", // name |
403 Mutex::_allow_vm_block_flag); // allow_vm_block |
403 Mutex::_allow_vm_block_flag, // allow_vm_block |
|
404 Monitor::_safepoint_check_never); |
404 // The queue for the GCTaskManager must be a CHeapObj. |
405 // The queue for the GCTaskManager must be a CHeapObj. |
405 GCTaskQueue* unsynchronized_queue = GCTaskQueue::create_on_c_heap(); |
406 GCTaskQueue* unsynchronized_queue = GCTaskQueue::create_on_c_heap(); |
406 _queue = SynchronizedGCTaskQueue::create(unsynchronized_queue, lock()); |
407 _queue = SynchronizedGCTaskQueue::create(unsynchronized_queue, lock()); |
407 _noop_task = NoopGCTask::create_on_c_heap(); |
408 _noop_task = NoopGCTask::create_on_c_heap(); |
408 _idle_inactive_task = WaitForBarrierGCTask::create_on_c_heap(); |
409 _idle_inactive_task = WaitForBarrierGCTask::create_on_c_heap(); |
1123 if (! freelist()->is_empty()) { |
1124 if (! freelist()->is_empty()) { |
1124 result = freelist()->pop(); |
1125 result = freelist()->pop(); |
1125 } else { |
1126 } else { |
1126 result = new Monitor(Mutex::barrier, // rank |
1127 result = new Monitor(Mutex::barrier, // rank |
1127 "MonitorSupply monitor", // name |
1128 "MonitorSupply monitor", // name |
1128 Mutex::_allow_vm_block_flag); // allow_vm_block |
1129 Mutex::_allow_vm_block_flag, // allow_vm_block |
|
1130 Monitor::_safepoint_check_never); |
1129 } |
1131 } |
1130 guarantee(result != NULL, "shouldn't return NULL"); |
1132 guarantee(result != NULL, "shouldn't return NULL"); |
1131 assert(!result->is_locked(), "shouldn't be locked"); |
1133 assert(!result->is_locked(), "shouldn't be locked"); |
1132 // release lock(). |
1134 // release lock(). |
1133 } |
1135 } |