< prev index next >

src/hotspot/share/gc/z/zHeap.cpp

Print this page

        

@@ -245,35 +245,49 @@
   if (page->dec_refcount()) {
     _page_allocator.free_page(page, reclaimed);
   }
 }
 
-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");
 
   // Update statistics
   ZStatSample(ZSamplerHeapUsedBeforeMark, used());
 
   // Flip address view
-  ZAddressMasks::flip_to_marked();
-  flip_views();
+  flip_to_marked();
 
   // Retire allocating pages
   _object_allocator.retire_pages();
 
   // Reset allocated/reclaimed/used statistics

@@ -464,12 +478,11 @@
 
   // Finish unloading of classes and code
   _unload.finish();
 
   // Flip address view
-  ZAddressMasks::flip_to_remapped();
-  flip_views();
+  flip_to_remapped();
 
   // Enter relocate phase
   ZGlobalPhase = ZPhaseRelocate;
 
   // Update statistics
< prev index next >