1.1 --- a/src/share/vm/gc_implementation/g1/concurrentMark.hpp Tue Nov 22 04:47:10 2011 -0500 1.2 +++ b/src/share/vm/gc_implementation/g1/concurrentMark.hpp Tue Aug 09 10:16:01 2011 -0700 1.3 @@ -375,7 +375,9 @@ 1.4 ConcurrentMarkThread* _cmThread; // the thread doing the work 1.5 G1CollectedHeap* _g1h; // the heap. 1.6 size_t _parallel_marking_threads; // the number of marking 1.7 - // threads we'll use 1.8 + // threads we're use 1.9 + size_t _max_parallel_marking_threads; // max number of marking 1.10 + // threads we'll ever use 1.11 double _sleep_factor; // how much we have to sleep, with 1.12 // respect to the work we just did, to 1.13 // meet the marking overhead goal 1.14 @@ -473,7 +475,7 @@ 1.15 1.16 double* _accum_task_vtime; // accumulated task vtime 1.17 1.18 - WorkGang* _parallel_workers; 1.19 + FlexibleWorkGang* _parallel_workers; 1.20 1.21 ForceOverflowSettings _force_overflow_conc; 1.22 ForceOverflowSettings _force_overflow_stw; 1.23 @@ -504,6 +506,7 @@ 1.24 1.25 // accessor methods 1.26 size_t parallel_marking_threads() { return _parallel_marking_threads; } 1.27 + size_t max_parallel_marking_threads() { return _max_parallel_marking_threads;} 1.28 double sleep_factor() { return _sleep_factor; } 1.29 double marking_task_overhead() { return _marking_task_overhead;} 1.30 double cleanup_sleep_factor() { return _cleanup_sleep_factor; } 1.31 @@ -709,6 +712,14 @@ 1.32 CMBitMapRO* prevMarkBitMap() const { return _prevMarkBitMap; } 1.33 CMBitMap* nextMarkBitMap() const { return _nextMarkBitMap; } 1.34 1.35 + // Returns the number of GC threads to be used in a concurrent 1.36 + // phase based on the number of GC threads being used in a STW 1.37 + // phase. 1.38 + size_t scale_parallel_threads(size_t n_par_threads); 1.39 + 1.40 + // Calculates the number of GC threads to be used in a concurrent phase. 1.41 + int calc_parallel_marking_threads(); 1.42 + 1.43 // The following three are interaction between CM and 1.44 // G1CollectedHeap 1.45