--- old/src/hotspot/share/gc/z/zHeap.cpp 2019-03-13 12:29:26.611286707 +0100 +++ new/src/hotspot/share/gc/z/zHeap.cpp 2019-03-13 12:29:26.278275964 +0100 @@ -247,22 +247,37 @@ } } -void ZHeap::flip_views() { - // For debugging only - if (ZUnmapBadViews) { - // Flip pages +void ZHeap::before_flip() { + if (ZVerifyViews) { + // Unmap all pages + _page_allocator.unmap_all_pages(); + } +} + +void ZHeap::after_flip() { + if (ZVerifyViews) { + // Map all pages ZPageTableIterator iter(&_pagetable); for (ZPage* page; iter.next(&page);) { if (!page->is_detached()) { - _page_allocator.flip_page(page); + _page_allocator.map_page(page); } } - - // Flip pre-mapped memory - _page_allocator.flip_pre_mapped(); } } +void ZHeap::flip_to_marked() { + before_flip(); + ZAddressMasks::flip_to_marked(); + after_flip(); +} + +void ZHeap::flip_to_remapped() { + before_flip(); + ZAddressMasks::flip_to_remapped(); + after_flip(); +} + void ZHeap::mark_start() { assert(SafepointSynchronize::is_at_safepoint(), "Should be at safepoint"); @@ -270,8 +285,7 @@ ZStatSample(ZSamplerHeapUsedBeforeMark, used()); // Flip address view - ZAddressMasks::flip_to_marked(); - flip_views(); + flip_to_marked(); // Retire allocating pages _object_allocator.retire_pages(); @@ -466,8 +480,7 @@ _unload.finish(); // Flip address view - ZAddressMasks::flip_to_remapped(); - flip_views(); + flip_to_remapped(); // Enter relocate phase ZGlobalPhase = ZPhaseRelocate;