src/hotspot/share/gc/g1/g1CollectedHeap.cpp
changeset 55377 f48d3bec75ba
parent 55338 755e82641224
child 55498 e64383344f14
equal deleted inserted replaced
55376:0f38ab93a53c 55377:f48d3bec75ba
  2778 
  2778 
  2779   // Finally flush all remembered set entries to re-check into the global DCQS.
  2779   // Finally flush all remembered set entries to re-check into the global DCQS.
  2780   cl.flush_rem_set_entries();
  2780   cl.flush_rem_set_entries();
  2781 }
  2781 }
  2782 
  2782 
       
  2783 #ifndef PRODUCT
       
  2784 void G1CollectedHeap::verify_region_attr_remset_update() {
       
  2785   class VerifyRegionAttrRemSet : public HeapRegionClosure {
       
  2786   public:
       
  2787     virtual bool do_heap_region(HeapRegion* r) {
       
  2788       G1CollectedHeap* g1h = G1CollectedHeap::heap();
       
  2789       bool const needs_remset_update = g1h->region_attr(r->bottom()).needs_remset_update();
       
  2790       assert(r->rem_set()->is_tracked() == needs_remset_update,
       
  2791              "Region %u remset tracking status (%s) different to region attribute (%s)",
       
  2792              r->hrm_index(), BOOL_TO_STR(r->rem_set()->is_tracked()), BOOL_TO_STR(needs_remset_update));
       
  2793       return false;
       
  2794     }
       
  2795   } cl;
       
  2796   heap_region_iterate(&cl);
       
  2797 }
       
  2798 #endif
       
  2799 
  2783 class VerifyRegionRemSetClosure : public HeapRegionClosure {
  2800 class VerifyRegionRemSetClosure : public HeapRegionClosure {
  2784   public:
  2801   public:
  2785     bool do_heap_region(HeapRegion* hr) {
  2802     bool do_heap_region(HeapRegion* hr) {
  2786       if (!hr->is_archive() && !hr->is_continues_humongous()) {
  2803       if (!hr->is_archive() && !hr->is_continues_humongous()) {
  2787         hr->verify_rem_set();
  2804         hr->verify_rem_set();
  3057                                                   collection_set()->optional_region_length());
  3074                                                   collection_set()->optional_region_length());
  3058         pre_evacuate_collection_set(evacuation_info);
  3075         pre_evacuate_collection_set(evacuation_info);
  3059 
  3076 
  3060         // Actually do the work...
  3077         // Actually do the work...
  3061         evacuate_initial_collection_set(&per_thread_states);
  3078         evacuate_initial_collection_set(&per_thread_states);
       
  3079 
  3062         if (_collection_set.optional_region_length() != 0) {
  3080         if (_collection_set.optional_region_length() != 0) {
  3063           evacuate_optional_collection_set(&per_thread_states);
  3081           evacuate_optional_collection_set(&per_thread_states);
  3064         }
  3082         }
  3065         post_evacuate_collection_set(evacuation_info, &per_thread_states);
  3083         post_evacuate_collection_set(evacuation_info, &per_thread_states);
  3066 
  3084