comparison src/share/vm/memory/cardTableRS.cpp @ 4095:bca17e38de00

6593758: RFE: Enhance GC ergonomics to dynamically choose ParallelGCThreads Summary: Select number of GC threads dynamically based on heap usage and number of Java threads Reviewed-by: johnc, ysr, jcoomes
author jmasa
date Tue, 09 Aug 2011 10:16:01 -0700
parents fc2b798ab316
children c7a555a9449a
comparison
equal deleted inserted replaced
4094:3a298e04d914 4095:bca17e38de00
162 } 162 }
163 163
164 ClearNoncleanCardWrapper::ClearNoncleanCardWrapper( 164 ClearNoncleanCardWrapper::ClearNoncleanCardWrapper(
165 DirtyCardToOopClosure* dirty_card_closure, CardTableRS* ct) : 165 DirtyCardToOopClosure* dirty_card_closure, CardTableRS* ct) :
166 _dirty_card_closure(dirty_card_closure), _ct(ct) { 166 _dirty_card_closure(dirty_card_closure), _ct(ct) {
167 // Cannot yet substitute active_workers for n_par_threads
168 // in the case where parallelism is being turned off by
169 // setting n_par_threads to 0.
167 _is_par = (SharedHeap::heap()->n_par_threads() > 0); 170 _is_par = (SharedHeap::heap()->n_par_threads() > 0);
171 assert(!_is_par ||
172 (SharedHeap::heap()->n_par_threads() ==
173 SharedHeap::heap()->workers()->active_workers()), "Mismatch");
168 } 174 }
169 175
170 void ClearNoncleanCardWrapper::do_MemRegion(MemRegion mr) { 176 void ClearNoncleanCardWrapper::do_MemRegion(MemRegion mr) {
171 assert(mr.word_size() > 0, "Error"); 177 assert(mr.word_size() > 0, "Error");
172 assert(_ct->is_aligned(mr.start()), "mr.start() should be card aligned"); 178 assert(_ct->is_aligned(mr.start()), "mr.start() should be card aligned");