--- a/src/hotspot/share/gc/z/zPage.cpp Mon Mar 18 11:50:38 2019 +0100
+++ b/src/hotspot/share/gc/z/zPage.cpp Mon Mar 18 11:50:39 2019 +0100
@@ -22,24 +22,12 @@
*/
#include "precompiled.hpp"
-#include "gc/shared/collectedHeap.hpp"
-#include "gc/z/zAddress.inline.hpp"
-#include "gc/z/zForwardingTable.inline.hpp"
-#include "gc/z/zHeap.inline.hpp"
-#include "gc/z/zLiveMap.inline.hpp"
-#include "gc/z/zMark.hpp"
#include "gc/z/zPage.inline.hpp"
#include "gc/z/zPhysicalMemory.inline.hpp"
-#include "gc/z/zStat.hpp"
-#include "gc/z/zThread.hpp"
-#include "gc/z/zUtils.inline.hpp"
-#include "logging/log.hpp"
+#include "gc/z/zVirtualMemory.inline.hpp"
#include "runtime/orderAccess.hpp"
#include "utilities/align.hpp"
#include "utilities/debug.hpp"
-#include "utilities/globalDefinitions.hpp"
-
-static const ZStatCounter ZCounterRelocationContention("Contention", "Relocation Contention", ZStatUnitOpsPerSecond);
ZPage::ZPage(uint8_t type, ZVirtualMemory vmem, ZPhysicalMemory pmem) :
_type(type),
@@ -81,82 +69,6 @@
_refcount = 1;
}
-uintptr_t ZPage::relocate_object_inner(uintptr_t from_index, uintptr_t from_offset) {
- ZForwardingTableCursor cursor;
-
- // Lookup address in forwarding table
- const ZForwardingTableEntry entry = _forwarding.find(from_index, &cursor);
- if (entry.from_index() == from_index) {
- // Already relocated, return new address
- return entry.to_offset();
- }
-
- // Not found in forwarding table, relocate object
- assert(is_object_marked(from_offset), "Should be marked");
-
- if (is_pinned()) {
- // In-place forward
- return _forwarding.insert(from_index, from_offset, &cursor);
- }
-
- // Allocate object
- const uintptr_t from_good = ZAddress::good(from_offset);
- const size_t size = ZUtils::object_size(from_good);
- const uintptr_t to_good = ZHeap::heap()->alloc_object_for_relocation(size);
- if (to_good == 0) {
- // Failed, in-place forward
- return _forwarding.insert(from_index, from_offset, &cursor);
- }
-
- // Copy object
- ZUtils::object_copy(from_good, to_good, size);
-
- // Update forwarding table
- const uintptr_t to_offset = ZAddress::offset(to_good);
- const uintptr_t to_offset_final = _forwarding.insert(from_index, to_offset, &cursor);
- if (to_offset_final == to_offset) {
- // Relocation succeeded
- return to_offset;
- }
-
- // Relocation contention
- ZStatInc(ZCounterRelocationContention);
- log_trace(gc)("Relocation contention, thread: " PTR_FORMAT " (%s), page: " PTR_FORMAT
- ", entry: " SIZE_FORMAT ", oop: " PTR_FORMAT ", size: " SIZE_FORMAT,
- ZThread::id(), ZThread::name(), p2i(this), cursor, from_good, size);
-
- // Try undo allocation
- ZHeap::heap()->undo_alloc_object_for_relocation(to_good, size);
-
- return to_offset_final;
-}
-
-uintptr_t ZPage::relocate_object(uintptr_t from) {
- assert(ZHeap::heap()->is_relocating(from), "Should be relocating");
-
- const uintptr_t from_offset = ZAddress::offset(from);
- const uintptr_t from_index = (from_offset - start()) >> object_alignment_shift();
- const uintptr_t to_offset = relocate_object_inner(from_index, from_offset);
- if (from_offset == to_offset) {
- // In-place forwarding, pin page
- set_pinned();
- }
-
- return ZAddress::good(to_offset);
-}
-
-uintptr_t ZPage::forward_object(uintptr_t from) {
- assert(ZHeap::heap()->is_relocating(from), "Should be relocated");
-
- // Lookup address in forwarding table
- const uintptr_t from_offset = ZAddress::offset(from);
- const uintptr_t from_index = (from_offset - start()) >> object_alignment_shift();
- const ZForwardingTableEntry entry = _forwarding.find(from_index);
- assert(entry.from_index() == from_index, "Should be forwarded");
-
- return ZAddress::good(entry.to_offset());
-}
-
void ZPage::print_on(outputStream* out) const {
out->print_cr(" %-6s " PTR_FORMAT " " PTR_FORMAT " " PTR_FORMAT " %s%s%s%s%s%s",
type_to_string(), start(), top(), end(),