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),