equal
deleted
inserted
replaced
323 uint _worker_id_offset; |
323 uint _worker_id_offset; |
324 uint _max_num_tasks; // Maximum number of marking tasks |
324 uint _max_num_tasks; // Maximum number of marking tasks |
325 uint _num_active_tasks; // Number of tasks currently active |
325 uint _num_active_tasks; // Number of tasks currently active |
326 G1CMTask** _tasks; // Task queue array (max_worker_id length) |
326 G1CMTask** _tasks; // Task queue array (max_worker_id length) |
327 |
327 |
328 G1CMTaskQueueSet* _task_queues; // Task queue set |
328 G1CMTaskQueueSet* _task_queues; // Task queue set |
329 ParallelTaskTerminator _terminator; // For termination |
329 TaskTerminator _terminator; // For termination |
330 |
330 |
331 // Two sync barriers that are used to synchronize tasks when an |
331 // Two sync barriers that are used to synchronize tasks when an |
332 // overflow occurs. The algorithm is the following. All tasks enter |
332 // overflow occurs. The algorithm is the following. All tasks enter |
333 // the first one to ensure that they have all stopped manipulating |
333 // the first one to ensure that they have all stopped manipulating |
334 // the global data structures. After they exit it, they re-initialize |
334 // the global data structures. After they exit it, they re-initialize |
410 void set_concurrency_and_phase(uint active_tasks, bool concurrent); |
410 void set_concurrency_and_phase(uint active_tasks, bool concurrent); |
411 |
411 |
412 // Prints all gathered CM-related statistics |
412 // Prints all gathered CM-related statistics |
413 void print_stats(); |
413 void print_stats(); |
414 |
414 |
415 HeapWord* finger() { return _finger; } |
415 HeapWord* finger() { return _finger; } |
416 bool concurrent() { return _concurrent; } |
416 bool concurrent() { return _concurrent; } |
417 uint active_tasks() { return _num_active_tasks; } |
417 uint active_tasks() { return _num_active_tasks; } |
418 ParallelTaskTerminator* terminator() { return &_terminator; } |
418 ParallelTaskTerminator* terminator() const { return _terminator.terminator(); } |
419 |
419 |
420 // Claims the next available region to be scanned by a marking |
420 // Claims the next available region to be scanned by a marking |
421 // task/thread. It might return NULL if the next region is empty or |
421 // task/thread. It might return NULL if the next region is empty or |
422 // we have run out of regions. In the latter case, out_of_regions() |
422 // we have run out of regions. In the latter case, out_of_regions() |
423 // determines whether we've really run out of regions or the task |
423 // determines whether we've really run out of regions or the task |