< prev index next >

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

Print this page

        

@@ -368,25 +368,17 @@
   _g1h->remove_from_old_sets(empty_set, _humongous_regions_removed);
 }
 
 bool G1PrepareCompactClosure::doHeapRegion(HeapRegion* hr) {
   if (hr->is_humongous()) {
-    oop obj;
-    if (hr->is_starts_humongous()) {
-      obj = oop(hr->bottom());
-      if (obj->is_gc_marked()) {
+    oop obj = oop(hr->humongous_start_region()->bottom());
+    if (hr->is_starts_humongous() && obj->is_gc_marked()) {
         obj->forward_to(obj);
-      } else  {
-        free_humongous_region(hr);
       }
-    } else {
-      assert(hr->is_continues_humongous(), "Invalid humongous.");
-      obj = oop(hr->humongous_start_region()->bottom());
       if (!obj->is_gc_marked()) {
         free_humongous_region(hr);
       }
-    }
   } else if (!hr->is_pinned()) {
     prepare_for_compaction(hr, hr->end());
   }
   return false;
 }
< prev index next >