--- 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();
}
}