< prev index next >

src/hotspot/share/gc/shared/weakProcessorPhaseTimes.cpp

Print this page
rev 57242 : imported patch 8235341-workerdataarray-cleanup
rev 57243 : [mq]: 8235341-stefanj-review


  63     times[i] = uninitialized_time;
  64   }
  65 }
  66 
  67 static void reset_items(size_t* items, size_t nitems) {
  68   for (size_t i = 0; i < nitems; ++i) {
  69     items[i] = 0;
  70   }
  71 }
  72 
  73 void WeakProcessorPhaseTimes::reset_phase_data() {
  74   reset_times(_phase_times_sec, ARRAY_SIZE(_phase_times_sec));
  75   reset_items(_phase_dead_items, ARRAY_SIZE(_phase_dead_items));
  76   reset_items(_phase_total_items, ARRAY_SIZE(_phase_total_items));
  77 }
  78 
  79 WeakProcessorPhaseTimes::WeakProcessorPhaseTimes(uint max_threads) :
  80   _max_threads(max_threads),
  81   _active_workers(0),
  82   _total_time_sec(uninitialized_time),
  83   _worker_data(),
  84   _worker_dead_items(),
  85   _worker_total_items()
  86 {
  87   assert(_max_threads > 0, "max_threads must not be zero");
  88 
  89   reset_phase_data();
  90 
  91   WorkerDataArray<double>** wpt = _worker_data;
  92   OopStorageSet::Iterator it = OopStorageSet::weak_iterator();
  93   for ( ; !it.is_end(); ++it) {
  94     assert(size_t(wpt - _worker_data) < ARRAY_SIZE(_worker_data), "invariant");
  95     const char* description = it->name();
  96     *wpt = new WorkerDataArray<double>(_max_threads, description);
  97     (*wpt)->link_thread_work_items(new WorkerDataArray<size_t>(_max_threads, "Dead"), DeadItems);
  98     (*wpt)->link_thread_work_items(new WorkerDataArray<size_t>(_max_threads, "Total"), TotalItems);
  99     wpt++;
 100   }
 101   assert(size_t(wpt - _worker_data) == ARRAY_SIZE(_worker_data), "invariant");
 102 }
 103 
 104 WeakProcessorPhaseTimes::~WeakProcessorPhaseTimes() {
 105   for (size_t i = 0; i < ARRAY_SIZE(_worker_data); ++i) {
 106     delete _worker_data[i];
 107     delete _worker_dead_items[i];
 108     delete _worker_total_items[i];
 109   }
 110 }
 111 
 112 uint WeakProcessorPhaseTimes::max_threads() const { return _max_threads; }
 113 
 114 uint WeakProcessorPhaseTimes::active_workers() const {
 115   assert(_active_workers != 0, "active workers not set");
 116   return _active_workers;
 117 }
 118 
 119 void WeakProcessorPhaseTimes::set_active_workers(uint n) {
 120   assert(_active_workers == 0, "active workers already set");
 121   assert(n > 0, "active workers must be non-zero");
 122   assert(n <= _max_threads, "active workers must not exceed max threads");
 123   _active_workers = n;
 124 }
 125 
 126 void WeakProcessorPhaseTimes::reset() {
 127   _active_workers = 0;
 128   _total_time_sec = uninitialized_time;




  63     times[i] = uninitialized_time;
  64   }
  65 }
  66 
  67 static void reset_items(size_t* items, size_t nitems) {
  68   for (size_t i = 0; i < nitems; ++i) {
  69     items[i] = 0;
  70   }
  71 }
  72 
  73 void WeakProcessorPhaseTimes::reset_phase_data() {
  74   reset_times(_phase_times_sec, ARRAY_SIZE(_phase_times_sec));
  75   reset_items(_phase_dead_items, ARRAY_SIZE(_phase_dead_items));
  76   reset_items(_phase_total_items, ARRAY_SIZE(_phase_total_items));
  77 }
  78 
  79 WeakProcessorPhaseTimes::WeakProcessorPhaseTimes(uint max_threads) :
  80   _max_threads(max_threads),
  81   _active_workers(0),
  82   _total_time_sec(uninitialized_time),
  83   _worker_data()


  84 {
  85   assert(_max_threads > 0, "max_threads must not be zero");
  86 
  87   reset_phase_data();
  88 
  89   WorkerDataArray<double>** wpt = _worker_data;
  90   OopStorageSet::Iterator it = OopStorageSet::weak_iterator();
  91   for ( ; !it.is_end(); ++it) {
  92     assert(size_t(wpt - _worker_data) < ARRAY_SIZE(_worker_data), "invariant");
  93     const char* description = it->name();
  94     *wpt = new WorkerDataArray<double>(description, _max_threads);
  95     (*wpt)->create_thread_work_items("Dead", DeadItems);
  96     (*wpt)->create_thread_work_items("Total", TotalItems);
  97     wpt++;
  98   }
  99   assert(size_t(wpt - _worker_data) == ARRAY_SIZE(_worker_data), "invariant");
 100 }
 101 
 102 WeakProcessorPhaseTimes::~WeakProcessorPhaseTimes() {
 103   for (size_t i = 0; i < ARRAY_SIZE(_worker_data); ++i) {
 104     delete _worker_data[i];


 105   }
 106 }
 107 
 108 uint WeakProcessorPhaseTimes::max_threads() const { return _max_threads; }
 109 
 110 uint WeakProcessorPhaseTimes::active_workers() const {
 111   assert(_active_workers != 0, "active workers not set");
 112   return _active_workers;
 113 }
 114 
 115 void WeakProcessorPhaseTimes::set_active_workers(uint n) {
 116   assert(_active_workers == 0, "active workers already set");
 117   assert(n > 0, "active workers must be non-zero");
 118   assert(n <= _max_threads, "active workers must not exceed max threads");
 119   _active_workers = n;
 120 }
 121 
 122 void WeakProcessorPhaseTimes::reset() {
 123   _active_workers = 0;
 124   _total_time_sec = uninitialized_time;


< prev index next >