src/share/vm/gc_implementation/g1/concurrentMark.cpp

changeset 1428
54b3b351d6f9
parent 1424
148e5441d916
parent 1371
e1fdf4fd34dc
child 1454
035d2e036a9b
     1.1 --- a/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Fri Sep 18 09:57:47 2009 -0700
     1.2 +++ b/src/share/vm/gc_implementation/g1/concurrentMark.cpp	Wed Sep 23 23:56:15 2009 -0700
     1.3 @@ -433,8 +433,7 @@
     1.4    _total_counting_time(0.0),
     1.5    _total_rs_scrub_time(0.0),
     1.6  
     1.7 -  _parallel_workers(NULL),
     1.8 -  _cleanup_co_tracker(G1CLGroup)
     1.9 +  _parallel_workers(NULL)
    1.10  {
    1.11    CMVerboseLevel verbose_level =
    1.12      (CMVerboseLevel) G1MarkingVerboseLevel;
    1.13 @@ -824,18 +823,6 @@
    1.14    // when marking is on. So, it's also called at the end of the
    1.15    // initial-mark pause to update the heap end, if the heap expands
    1.16    // during it. No need to call it here.
    1.17 -
    1.18 -  guarantee( !_cleanup_co_tracker.enabled(), "invariant" );
    1.19 -
    1.20 -  size_t max_marking_threads =
    1.21 -    MAX2((size_t) 1, parallel_marking_threads());
    1.22 -  for (int i = 0; i < (int)_max_task_num; ++i) {
    1.23 -    _tasks[i]->enable_co_tracker();
    1.24 -    if (i < (int) max_marking_threads)
    1.25 -      _tasks[i]->reset_co_tracker(marking_task_overhead());
    1.26 -    else
    1.27 -      _tasks[i]->reset_co_tracker(0.0);
    1.28 -  }
    1.29  }
    1.30  
    1.31  // Checkpoint the roots into this generation from outside
    1.32 @@ -846,7 +833,6 @@
    1.33    G1CollectedHeap* g1h = G1CollectedHeap::heap();
    1.34  
    1.35    double start = os::elapsedTime();
    1.36 -  GCOverheadReporter::recordSTWStart(start);
    1.37  
    1.38    G1CollectorPolicy* g1p = G1CollectedHeap::heap()->g1_policy();
    1.39    g1p->record_concurrent_mark_init_start();
    1.40 @@ -879,7 +865,6 @@
    1.41    // Statistics.
    1.42    double end = os::elapsedTime();
    1.43    _init_times.add((end - start) * 1000.0);
    1.44 -  GCOverheadReporter::recordSTWEnd(end);
    1.45  
    1.46    g1p->record_concurrent_mark_init_end();
    1.47  }
    1.48 @@ -1038,7 +1023,6 @@
    1.49  
    1.50      guarantee( (size_t)worker_i < _cm->active_tasks(), "invariant" );
    1.51      CMTask* the_task = _cm->task(worker_i);
    1.52 -    the_task->start_co_tracker();
    1.53      the_task->record_start_time();
    1.54      if (!_cm->has_aborted()) {
    1.55        do {
    1.56 @@ -1064,8 +1048,6 @@
    1.57          double end_time2_sec = os::elapsedTime();
    1.58          double elapsed_time2_sec = end_time2_sec - start_time_sec;
    1.59  
    1.60 -        the_task->update_co_tracker();
    1.61 -
    1.62  #if 0
    1.63            gclog_or_tty->print_cr("CM: elapsed %1.4lf ms, sleep %1.4lf ms, "
    1.64                                   "overhead %1.4lf",
    1.65 @@ -1082,7 +1064,6 @@
    1.66      ConcurrentGCThread::stsLeave();
    1.67  
    1.68      double end_vtime = os::elapsedVTime();
    1.69 -    the_task->update_co_tracker(true);
    1.70      _cm->update_accum_task_vtime(worker_i, end_vtime - start_vtime);
    1.71    }
    1.72  
    1.73 @@ -1136,7 +1117,6 @@
    1.74    g1p->record_concurrent_mark_remark_start();
    1.75  
    1.76    double start = os::elapsedTime();
    1.77 -  GCOverheadReporter::recordSTWStart(start);
    1.78  
    1.79    checkpointRootsFinalWork();
    1.80  
    1.81 @@ -1176,11 +1156,6 @@
    1.82    _remark_weak_ref_times.add((now - mark_work_end) * 1000.0);
    1.83    _remark_times.add((now - start) * 1000.0);
    1.84  
    1.85 -  GCOverheadReporter::recordSTWEnd(now);
    1.86 -  for (int i = 0; i < (int)_max_task_num; ++i)
    1.87 -    _tasks[i]->disable_co_tracker();
    1.88 -  _cleanup_co_tracker.enable();
    1.89 -  _cleanup_co_tracker.reset(cleanup_task_overhead());
    1.90    g1p->record_concurrent_mark_remark_end();
    1.91  }
    1.92  
    1.93 @@ -1191,7 +1166,6 @@
    1.94  
    1.95    CMBitMapRO* _bm;
    1.96    ConcurrentMark* _cm;
    1.97 -  COTracker* _co_tracker;
    1.98    bool _changed;
    1.99    bool _yield;
   1.100    size_t _words_done;
   1.101 @@ -1219,12 +1193,10 @@
   1.102  public:
   1.103    CalcLiveObjectsClosure(bool final,
   1.104                           CMBitMapRO *bm, ConcurrentMark *cm,
   1.105 -                         BitMap* region_bm, BitMap* card_bm,
   1.106 -                         COTracker* co_tracker) :
   1.107 +                         BitMap* region_bm, BitMap* card_bm) :
   1.108      _bm(bm), _cm(cm), _changed(false), _yield(true),
   1.109      _words_done(0), _tot_live(0), _tot_used(0),
   1.110 -    _region_bm(region_bm), _card_bm(card_bm),
   1.111 -    _final(final), _co_tracker(co_tracker),
   1.112 +    _region_bm(region_bm), _card_bm(card_bm),_final(final),
   1.113      _regions_done(0), _start_vtime_sec(0.0)
   1.114    {
   1.115      _bottom_card_num =
   1.116 @@ -1268,9 +1240,6 @@
   1.117    }
   1.118  
   1.119    bool doHeapRegion(HeapRegion* hr) {
   1.120 -    if (_co_tracker != NULL)
   1.121 -      _co_tracker->update();
   1.122 -
   1.123      if (!_final && _regions_done == 0)
   1.124        _start_vtime_sec = os::elapsedVTime();
   1.125  
   1.126 @@ -1399,12 +1368,6 @@
   1.127          if (elapsed_vtime_sec > (10.0 / 1000.0)) {
   1.128            jlong sleep_time_ms =
   1.129              (jlong) (elapsed_vtime_sec * _cm->cleanup_sleep_factor() * 1000.0);
   1.130 -#if 0
   1.131 -          gclog_or_tty->print_cr("CL: elapsed %1.4lf ms, sleep %1.4lf ms, "
   1.132 -                                 "overhead %1.4lf",
   1.133 -                                 elapsed_vtime_sec * 1000.0, (double) sleep_time_ms,
   1.134 -                                 _co_tracker->concOverhead(os::elapsedTime()));
   1.135 -#endif
   1.136            os::sleep(Thread::current(), sleep_time_ms, false);
   1.137            _start_vtime_sec = end_vtime_sec;
   1.138          }
   1.139 @@ -1424,15 +1387,11 @@
   1.140  
   1.141  
   1.142  void ConcurrentMark::calcDesiredRegions() {
   1.143 -  guarantee( _cleanup_co_tracker.enabled(), "invariant" );
   1.144 -  _cleanup_co_tracker.start();
   1.145 -
   1.146    _region_bm.clear();
   1.147    _card_bm.clear();
   1.148    CalcLiveObjectsClosure calccl(false /*final*/,
   1.149                                  nextMarkBitMap(), this,
   1.150 -                                &_region_bm, &_card_bm,
   1.151 -                                &_cleanup_co_tracker);
   1.152 +                                &_region_bm, &_card_bm);
   1.153    G1CollectedHeap *g1h = G1CollectedHeap::heap();
   1.154    g1h->heap_region_iterate(&calccl);
   1.155  
   1.156 @@ -1440,8 +1399,6 @@
   1.157      calccl.reset();
   1.158      g1h->heap_region_iterate(&calccl);
   1.159    } while (calccl.changed());
   1.160 -
   1.161 -  _cleanup_co_tracker.update(true);
   1.162  }
   1.163  
   1.164  class G1ParFinalCountTask: public AbstractGangTask {
   1.165 @@ -1475,8 +1432,7 @@
   1.166    void work(int i) {
   1.167      CalcLiveObjectsClosure calccl(true /*final*/,
   1.168                                    _bm, _g1h->concurrent_mark(),
   1.169 -                                  _region_bm, _card_bm,
   1.170 -                                  NULL /* CO tracker */);
   1.171 +                                  _region_bm, _card_bm);
   1.172      calccl.no_yield();
   1.173      if (ParallelGCThreads > 0) {
   1.174        _g1h->heap_region_par_iterate_chunked(&calccl, i,
   1.175 @@ -1666,13 +1622,10 @@
   1.176                       /* prev marking */ true);
   1.177    }
   1.178  
   1.179 -  _cleanup_co_tracker.disable();
   1.180 -
   1.181    G1CollectorPolicy* g1p = G1CollectedHeap::heap()->g1_policy();
   1.182    g1p->record_concurrent_mark_cleanup_start();
   1.183  
   1.184    double start = os::elapsedTime();
   1.185 -  GCOverheadReporter::recordSTWStart(start);
   1.186  
   1.187    // Do counting once more with the world stopped for good measure.
   1.188    G1ParFinalCountTask g1_par_count_task(g1h, nextMarkBitMap(),
   1.189 @@ -1777,7 +1730,6 @@
   1.190    // Statistics.
   1.191    double end = os::elapsedTime();
   1.192    _cleanup_times.add((end - start) * 1000.0);
   1.193 -  GCOverheadReporter::recordSTWEnd(end);
   1.194  
   1.195    // G1CollectedHeap::heap()->print();
   1.196    // gclog_or_tty->print_cr("HEAP GC TIME STAMP : %d",
   1.197 @@ -2628,24 +2580,6 @@
   1.198      _should_gray_objects = true;
   1.199  }
   1.200  
   1.201 -void ConcurrentMark::disable_co_trackers() {
   1.202 -  if (has_aborted()) {
   1.203 -    if (_cleanup_co_tracker.enabled())
   1.204 -      _cleanup_co_tracker.disable();
   1.205 -    for (int i = 0; i < (int)_max_task_num; ++i) {
   1.206 -      CMTask* task = _tasks[i];
   1.207 -      if (task->co_tracker_enabled())
   1.208 -        task->disable_co_tracker();
   1.209 -    }
   1.210 -  } else {
   1.211 -    guarantee( !_cleanup_co_tracker.enabled(), "invariant" );
   1.212 -    for (int i = 0; i < (int)_max_task_num; ++i) {
   1.213 -      CMTask* task = _tasks[i];
   1.214 -      guarantee( !task->co_tracker_enabled(), "invariant" );
   1.215 -    }
   1.216 -  }
   1.217 -}
   1.218 -
   1.219  // abandon current marking iteration due to a Full GC
   1.220  void ConcurrentMark::abort() {
   1.221    // Clear all marks to force marking thread to do nothing
   1.222 @@ -4021,7 +3955,6 @@
   1.223                 CMTaskQueue* task_queue,
   1.224                 CMTaskQueueSet* task_queues)
   1.225    : _g1h(G1CollectedHeap::heap()),
   1.226 -    _co_tracker(G1CMGroup),
   1.227      _task_id(task_id), _cm(cm),
   1.228      _claimed(false),
   1.229      _nextMarkBitMap(NULL), _hash_seed(17),

mercurial