< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahHeapRegion.cpp

Print this page
rev 50076 : Fold Partial GC into Traversal GC

*** 22,35 **** --- 22,37 ---- */ #include "precompiled.hpp" #include "memory/allocation.hpp" #include "gc/shenandoah/brooksPointer.hpp" + #include "gc/shenandoah/shenandoahHeapRegionSet.inline.hpp" #include "gc/shenandoah/shenandoahConnectionMatrix.hpp" #include "gc/shenandoah/shenandoahHeap.hpp" #include "gc/shenandoah/shenandoahHeap.inline.hpp" #include "gc/shenandoah/shenandoahHeapRegion.hpp" + #include "gc/shenandoah/shenandoahTraversalGC.hpp" #include "gc/shared/space.inline.hpp" #include "memory/universe.hpp" #include "oops/oop.inline.hpp" #include "runtime/java.hpp" #include "runtime/mutexLocker.hpp"
*** 57,67 **** _live_data(0), _tlab_allocs(0), _gclab_allocs(0), _shared_allocs(0), _reserved(MemRegion(start, size_words)), - _root(false), _new_top(NULL), _seqnum_first_alloc_mutator(0), _seqnum_last_alloc_mutator(0), _seqnum_first_alloc_gc(0), _seqnum_last_alloc_gc(0), --- 59,68 ----
*** 433,443 **** st->print("|U %3d%%", (int) ((double) used() * 100 / capacity())); st->print("|T %3d%%", (int) ((double) get_tlab_allocs() * 100 / capacity())); st->print("|G %3d%%", (int) ((double) get_gclab_allocs() * 100 / capacity())); st->print("|S %3d%%", (int) ((double) get_shared_allocs() * 100 / capacity())); st->print("|L %3d%%", (int) ((double) get_live_data_bytes() * 100 / capacity())); ! if (is_root()) { st->print("|R"); } else { st->print("| "); } st->print("|CP " SIZE_FORMAT_W(3), _critical_pins); --- 434,444 ---- st->print("|U %3d%%", (int) ((double) used() * 100 / capacity())); st->print("|T %3d%%", (int) ((double) get_tlab_allocs() * 100 / capacity())); st->print("|G %3d%%", (int) ((double) get_gclab_allocs() * 100 / capacity())); st->print("|S %3d%%", (int) ((double) get_shared_allocs() * 100 / capacity())); st->print("|L %3d%%", (int) ((double) get_live_data_bytes() * 100 / capacity())); ! if (_heap->traversal_gc() != NULL && _heap->traversal_gc()->root_regions()->is_in(region_number())) { st->print("|R"); } else { st->print("| "); } st->print("|CP " SIZE_FORMAT_W(3), _critical_pins);
*** 503,522 **** ContiguousSpace::clear(false); if (ZapUnusedHeapArea) { ContiguousSpace::mangle_unused_area_complete(); } clear_live_data(); - _root = false; reset_alloc_metadata(); // Reset C-TAMS pointer to ensure size-based iteration, everything // in that regions is going to be new objects. ! _heap->set_complete_top_at_mark_start(bottom(), bottom()); // We can only safely reset the C-TAMS pointer if the bitmap is clear for that region. assert(_heap->is_complete_bitmap_clear_range(bottom(), end()), "must be clear"); if (UseShenandoahMatrix) { _heap->connection_matrix()->clear_region(region_number()); } make_empty(); --- 504,534 ---- ContiguousSpace::clear(false); if (ZapUnusedHeapArea) { ContiguousSpace::mangle_unused_area_complete(); } clear_live_data(); reset_alloc_metadata(); // Reset C-TAMS pointer to ensure size-based iteration, everything // in that regions is going to be new objects. ! if (ShenandoahRecycleClearsBitmap && !_heap->is_full_gc_in_progress()) { ! HeapWord* r_bottom = bottom(); ! HeapWord* top = _heap->complete_top_at_mark_start(r_bottom); ! if (top > r_bottom) { ! _heap->complete_mark_bit_map()->clear_range_large(MemRegion(r_bottom, top)); ! } ! ! assert(_heap->is_next_bitmap_clear_range(bottom(), end()), "must be clear"); ! _heap->set_next_top_at_mark_start(bottom(), bottom()); ! } ! // We can only safely reset the C-TAMS pointer if the bitmap is clear for that region. assert(_heap->is_complete_bitmap_clear_range(bottom(), end()), "must be clear"); + _heap->set_complete_top_at_mark_start(bottom(), bottom()); + if (UseShenandoahMatrix) { _heap->connection_matrix()->clear_region(region_number()); } make_empty();
< prev index next >