< prev index next >

src/share/vm/gc/g1/g1CardLiveData.cpp

Print this page
rev 10807 : 8153843: G1CardLiveDataHelper incorrectly sets next_live_bytes on dead humongous regions
Reviewed-by:

@@ -204,12 +204,18 @@
     if (ntams <= start) {
       // Skip empty regions.
       return 0;
     }
     if (hr->is_humongous()) {
+      HeapRegion* start_region = hr->humongous_start_region();
+      if (mark_bitmap->isMarked(start_region->bottom())) {
       mark_card_bitmap_range(start, hr->top());
       return pointer_delta(hr->top(), start, 1);
+      } else {
+        // Humongous start object was actually dead.
+        return 0;
+      }
     }
 
     assert(start <= hr->end() && start <= ntams && ntams <= hr->end(),
            "Preconditions not met - "
            "start: " PTR_FORMAT ", ntams: " PTR_FORMAT ", end: " PTR_FORMAT,
< prev index next >