src/hotspot/share/gc/z/zHeap.cpp
changeset 54159 7c23a4432610
parent 54094 ed3c6f07faab
child 54161 349843ebb209
--- a/src/hotspot/share/gc/z/zHeap.cpp	Sun Mar 17 08:26:38 2019 +0000
+++ b/src/hotspot/share/gc/z/zHeap.cpp	Mon Mar 18 11:50:38 2019 +0100
@@ -247,20 +247,35 @@
   }
 }
 
-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() {
@@ -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;