Mercurial > hg > truffle
comparison src/share/vm/utilities/workgroup.cpp @ 6197:d2a62e0f25eb
6995781: Native Memory Tracking (Phase 1)
7151532: DCmd for hotspot native memory tracking
Summary: Implementation of native memory tracking phase 1, which tracks VM native memory usage, and related DCmd
Reviewed-by: acorn, coleenp, fparain
author | zgu |
---|---|
date | Thu, 28 Jun 2012 17:03:16 -0400 |
parents | 441e946dc1af |
children | b9a9ed0f8eeb |
comparison
equal
deleted
inserted
replaced
6174:74533f63b116 | 6197:d2a62e0f25eb |
---|---|
75 if (TraceWorkGang) { | 75 if (TraceWorkGang) { |
76 tty->print_cr("Constructing work gang %s with %d threads", | 76 tty->print_cr("Constructing work gang %s with %d threads", |
77 name(), | 77 name(), |
78 total_workers()); | 78 total_workers()); |
79 } | 79 } |
80 _gang_workers = NEW_C_HEAP_ARRAY(GangWorker*, total_workers()); | 80 _gang_workers = NEW_C_HEAP_ARRAY(GangWorker*, total_workers(), mtInternal); |
81 if (gang_workers() == NULL) { | 81 if (gang_workers() == NULL) { |
82 vm_exit_out_of_memory(0, "Cannot create GangWorker array."); | 82 vm_exit_out_of_memory(0, "Cannot create GangWorker array."); |
83 return false; | 83 return false; |
84 } | 84 } |
85 os::ThreadType worker_type; | 85 os::ThreadType worker_type; |
239 loop(); | 239 loop(); |
240 } | 240 } |
241 | 241 |
242 void GangWorker::initialize() { | 242 void GangWorker::initialize() { |
243 this->initialize_thread_local_storage(); | 243 this->initialize_thread_local_storage(); |
244 this->record_stack_base_and_size(); | |
244 assert(_gang != NULL, "No gang to run in"); | 245 assert(_gang != NULL, "No gang to run in"); |
245 os::set_priority(this, NearMaxPriority); | 246 os::set_priority(this, NearMaxPriority); |
246 if (TraceWorkGang) { | 247 if (TraceWorkGang) { |
247 tty->print_cr("Running gang worker for gang %s id %d", | 248 tty->print_cr("Running gang worker for gang %s id %d", |
248 gang()->name(), id()); | 249 gang()->name(), id()); |
419 | 420 |
420 // SubTasksDone functions. | 421 // SubTasksDone functions. |
421 | 422 |
422 SubTasksDone::SubTasksDone(uint n) : | 423 SubTasksDone::SubTasksDone(uint n) : |
423 _n_tasks(n), _n_threads(1), _tasks(NULL) { | 424 _n_tasks(n), _n_threads(1), _tasks(NULL) { |
424 _tasks = NEW_C_HEAP_ARRAY(uint, n); | 425 _tasks = NEW_C_HEAP_ARRAY(uint, n, mtInternal); |
425 guarantee(_tasks != NULL, "alloc failure"); | 426 guarantee(_tasks != NULL, "alloc failure"); |
426 clear(); | 427 clear(); |
427 } | 428 } |
428 | 429 |
429 bool SubTasksDone::valid() { | 430 bool SubTasksDone::valid() { |
474 if (observed+1 == (jint)_n_threads) clear(); | 475 if (observed+1 == (jint)_n_threads) clear(); |
475 } | 476 } |
476 | 477 |
477 | 478 |
478 SubTasksDone::~SubTasksDone() { | 479 SubTasksDone::~SubTasksDone() { |
479 if (_tasks != NULL) FREE_C_HEAP_ARRAY(jint, _tasks); | 480 if (_tasks != NULL) FREE_C_HEAP_ARRAY(jint, _tasks, mtInternal); |
480 } | 481 } |
481 | 482 |
482 // *** SequentialSubTasksDone | 483 // *** SequentialSubTasksDone |
483 | 484 |
484 void SequentialSubTasksDone::clear() { | 485 void SequentialSubTasksDone::clear() { |