197 //------------------------------------------------------------------------------------------------------------------
198 // Implementation of VMThread stuff
199
200 bool VMThread::_should_terminate = false;
201 bool VMThread::_terminated = false;
202 Monitor* VMThread::_terminate_lock = NULL;
203 VMThread* VMThread::_vm_thread = NULL;
204 VM_Operation* VMThread::_cur_vm_operation = NULL;
205 VMOperationQueue* VMThread::_vm_queue = NULL;
206 PerfCounter* VMThread::_perf_accumulated_vm_operation_time = NULL;
207
208
209 void VMThread::create() {
210 assert(vm_thread() == NULL, "we can only allocate one VMThread");
211 _vm_thread = new VMThread();
212
213 // Create VM operation queue
214 _vm_queue = new VMOperationQueue();
215 guarantee(_vm_queue != NULL, "just checking");
216
217 _terminate_lock = new Monitor(Mutex::safepoint, "VMThread::_terminate_lock", true);
218
219 if (UsePerfData) {
220 // jvmstat performance counters
221 Thread* THREAD = Thread::current();
222 _perf_accumulated_vm_operation_time =
223 PerfDataManager::create_counter(SUN_THREADS, "vmOperationTime",
224 PerfData::U_Ticks, CHECK);
225 }
226 }
227
228
229 VMThread::VMThread() : NamedThread() {
230 set_name("VM Thread");
231 }
232
233 void VMThread::destroy() {
234 if (_vm_thread != NULL) {
235 delete _vm_thread;
236 _vm_thread = NULL; // VM thread is gone
237 }
|
197 //------------------------------------------------------------------------------------------------------------------
198 // Implementation of VMThread stuff
199
200 bool VMThread::_should_terminate = false;
201 bool VMThread::_terminated = false;
202 Monitor* VMThread::_terminate_lock = NULL;
203 VMThread* VMThread::_vm_thread = NULL;
204 VM_Operation* VMThread::_cur_vm_operation = NULL;
205 VMOperationQueue* VMThread::_vm_queue = NULL;
206 PerfCounter* VMThread::_perf_accumulated_vm_operation_time = NULL;
207
208
209 void VMThread::create() {
210 assert(vm_thread() == NULL, "we can only allocate one VMThread");
211 _vm_thread = new VMThread();
212
213 // Create VM operation queue
214 _vm_queue = new VMOperationQueue();
215 guarantee(_vm_queue != NULL, "just checking");
216
217 _terminate_lock = new Monitor(Mutex::safepoint, "VMThread::_terminate_lock", true,
218 Monitor::_safepoint_check_never);
219
220 if (UsePerfData) {
221 // jvmstat performance counters
222 Thread* THREAD = Thread::current();
223 _perf_accumulated_vm_operation_time =
224 PerfDataManager::create_counter(SUN_THREADS, "vmOperationTime",
225 PerfData::U_Ticks, CHECK);
226 }
227 }
228
229
230 VMThread::VMThread() : NamedThread() {
231 set_name("VM Thread");
232 }
233
234 void VMThread::destroy() {
235 if (_vm_thread != NULL) {
236 delete _vm_thread;
237 _vm_thread = NULL; // VM thread is gone
238 }
|