hotspot/src/share/vm/gc/g1/g1CardLiveData.cpp
changeset 37471 6ba3e52c2bd6
parent 37414 2672ba9af0dc
child 37989 e0a0f4de45c4
--- a/hotspot/src/share/vm/gc/g1/g1CardLiveData.cpp	Tue Apr 12 14:03:31 2016 +0200
+++ b/hotspot/src/share/vm/gc/g1/g1CardLiveData.cpp	Mon Apr 11 09:49:10 2016 +0200
@@ -206,8 +206,14 @@
       return 0;
     }
     if (hr->is_humongous()) {
-      mark_card_bitmap_range(start, hr->top());
-      return pointer_delta(hr->top(), start, 1);
+      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(),