src/hotspot/share/gc/g1/g1ConcurrentMark.hpp
changeset 52905 bec57b4a6d69
parent 52875 bb051ca06e9e
child 53244 9807daeb47c4
equal deleted inserted replaced
52904:d2f118d3f8e7 52905:bec57b4a6d69
   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