< 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 >