4091 register_humongous_regions_with_in_cset_fast_test(); |
4091 register_humongous_regions_with_in_cset_fast_test(); |
4092 |
4092 |
4093 assert(check_cset_fast_test(), "Inconsistency in the InCSetState table."); |
4093 assert(check_cset_fast_test(), "Inconsistency in the InCSetState table."); |
4094 |
4094 |
4095 _cm->note_start_of_gc(); |
4095 _cm->note_start_of_gc(); |
4096 // We should not verify the per-thread SATB buffers given that |
4096 // We call this after finalize_cset() to |
4097 // we have not filtered them yet (we'll do so during the |
|
4098 // GC). We also call this after finalize_cset() to |
|
4099 // ensure that the CSet has been finalized. |
4097 // ensure that the CSet has been finalized. |
4100 _cm->verify_no_cset_oops(true /* verify_stacks */, |
4098 _cm->verify_no_cset_oops(); |
4101 true /* verify_enqueued_buffers */, |
|
4102 false /* verify_thread_buffers */, |
|
4103 true /* verify_fingers */); |
|
4104 |
4099 |
4105 if (_hr_printer.is_active()) { |
4100 if (_hr_printer.is_active()) { |
4106 HeapRegion* hr = g1_policy()->collection_set(); |
4101 HeapRegion* hr = g1_policy()->collection_set(); |
4107 while (hr != NULL) { |
4102 while (hr != NULL) { |
4108 _hr_printer.cset(hr); |
4103 _hr_printer.cset(hr); |
4120 // Initialize the GC alloc regions. |
4115 // Initialize the GC alloc regions. |
4121 _allocator->init_gc_alloc_regions(evacuation_info); |
4116 _allocator->init_gc_alloc_regions(evacuation_info); |
4122 |
4117 |
4123 // Actually do the work... |
4118 // Actually do the work... |
4124 evacuate_collection_set(evacuation_info); |
4119 evacuate_collection_set(evacuation_info); |
4125 |
|
4126 // We do this to mainly verify the per-thread SATB buffers |
|
4127 // (which have been filtered by now) since we didn't verify |
|
4128 // them earlier. No point in re-checking the stacks / enqueued |
|
4129 // buffers given that the CSet has not changed since last time |
|
4130 // we checked. |
|
4131 _cm->verify_no_cset_oops(false /* verify_stacks */, |
|
4132 false /* verify_enqueued_buffers */, |
|
4133 true /* verify_thread_buffers */, |
|
4134 true /* verify_fingers */); |
|
4135 |
4120 |
4136 free_collection_set(g1_policy()->collection_set(), evacuation_info); |
4121 free_collection_set(g1_policy()->collection_set(), evacuation_info); |
4137 |
4122 |
4138 eagerly_reclaim_humongous_regions(); |
4123 eagerly_reclaim_humongous_regions(); |
4139 |
4124 |
4213 } |
4198 } |
4214 } |
4199 } |
4215 |
4200 |
4216 // We redo the verification but now wrt to the new CSet which |
4201 // We redo the verification but now wrt to the new CSet which |
4217 // has just got initialized after the previous CSet was freed. |
4202 // has just got initialized after the previous CSet was freed. |
4218 _cm->verify_no_cset_oops(true /* verify_stacks */, |
4203 _cm->verify_no_cset_oops(); |
4219 true /* verify_enqueued_buffers */, |
|
4220 true /* verify_thread_buffers */, |
|
4221 true /* verify_fingers */); |
|
4222 _cm->note_end_of_gc(); |
4204 _cm->note_end_of_gc(); |
4223 |
4205 |
4224 // This timing is only used by the ergonomics to handle our pause target. |
4206 // This timing is only used by the ergonomics to handle our pause target. |
4225 // It is unclear why this should not include the full pause. We will |
4207 // It is unclear why this should not include the full pause. We will |
4226 // investigate this in CR 7178365. |
4208 // investigate this in CR 7178365. |