1.1 --- a/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp Mon Jun 28 14:13:18 2010 -0400 1.2 +++ b/src/share/vm/gc_implementation/g1/g1CollectorPolicy.hpp Mon Jun 28 14:13:17 2010 -0400 1.3 @@ -199,8 +199,6 @@ 1.4 size_t _young_cset_length; 1.5 bool _last_young_gc_full; 1.6 1.7 - double _target_pause_time_ms; 1.8 - 1.9 unsigned _full_young_pause_num; 1.10 unsigned _partial_young_pause_num; 1.11 1.12 @@ -526,6 +524,10 @@ 1.13 return _mmu_tracker; 1.14 } 1.15 1.16 + double max_pause_time_ms() { 1.17 + return _mmu_tracker->max_gc_time() * 1000.0; 1.18 + } 1.19 + 1.20 double predict_init_time_ms() { 1.21 return get_new_prediction(_concurrent_mark_init_times_ms); 1.22 } 1.23 @@ -1008,7 +1010,7 @@ 1.24 // Choose a new collection set. Marks the chosen regions as being 1.25 // "in_collection_set", and links them together. The head and number of 1.26 // the collection set are available via access methods. 1.27 - virtual bool choose_collection_set() = 0; 1.28 + virtual bool choose_collection_set(double target_pause_time_ms) = 0; 1.29 1.30 // The head of the list (via "next_in_collection_set()") representing the 1.31 // current collection set. 1.32 @@ -1077,6 +1079,12 @@ 1.33 void set_during_initial_mark_pause() { _during_initial_mark_pause = true; } 1.34 void clear_during_initial_mark_pause(){ _during_initial_mark_pause = false; } 1.35 1.36 + // This sets the initiate_conc_mark_if_possible() flag to start a 1.37 + // new cycle, as long as we are not already in one. It's best if it 1.38 + // is called during a safepoint when the test whether a cycle is in 1.39 + // progress or not is stable. 1.40 + bool force_initial_mark_if_outside_cycle(); 1.41 + 1.42 // This is called at the very beginning of an evacuation pause (it 1.43 // has to be the first thing that the pause does). If 1.44 // initiate_conc_mark_if_possible() is true, and the concurrent 1.45 @@ -1259,7 +1267,7 @@ 1.46 // If the estimated is less then desirable, resize if possible. 1.47 void expand_if_possible(size_t numRegions); 1.48 1.49 - virtual bool choose_collection_set(); 1.50 + virtual bool choose_collection_set(double target_pause_time_ms); 1.51 virtual void record_collection_pause_start(double start_time_sec, 1.52 size_t start_used); 1.53 virtual void record_concurrent_mark_cleanup_end(size_t freed_bytes,