src/hotspot/share/gc/z/zRelocate.cpp
changeset 54163 790679f86a51
parent 54162 f344a0c6e19e
child 54330 69e80a82db9a
--- a/src/hotspot/share/gc/z/zRelocate.cpp	Mon Mar 18 11:50:39 2019 +0100
+++ b/src/hotspot/share/gc/z/zRelocate.cpp	Mon Mar 18 11:50:39 2019 +0100
@@ -83,11 +83,6 @@
   _workers->run_parallel(&task);
 }
 
-ZForwarding* ZRelocate::forwarding_for_page(ZPage* page) const {
-  const uintptr_t addr = ZAddress::good(page->start());
-  return ZHeap::heap()->forwarding(addr);
-}
-
 uintptr_t ZRelocate::relocate_object_inner(ZForwarding* forwarding, uintptr_t from_index, uintptr_t from_offset) const {
   ZForwardingCursor cursor;
 
@@ -178,14 +173,13 @@
   bool success = true;
 
   // Relocate pages in the relocation set
-  for (ZPage* page; iter->next(&page);) {
+  for (ZForwarding* forwarding; iter->next(&forwarding);) {
     // Relocate objects in page
-    ZForwarding* const forwarding = forwarding_for_page(page);
     ZRelocateObjectClosure cl(this, forwarding);
-    page->object_iterate(&cl);
+    forwarding->page()->object_iterate(&cl);
 
     if (ZVerifyForwarding) {
-      forwarding->verify(page->object_max_count(), page->live_objects());
+      forwarding->verify();
     }
 
     if (forwarding->is_pinned()) {
@@ -193,9 +187,7 @@
       success = false;
     } else {
       // Relocation succeeded, release page
-      if (forwarding->dec_refcount()) {
-        ZHeap::heap()->free_page(page, true /* reclaimed */);
-      }
+      forwarding->release_page();
     }
   }