Mercurial > hg > jdk9-shenandoah > hotspot
changeset 9613:9c265a9a7251
More efficient test for clear-bitmap. Print reset-bitmap trace in ShenandoahTracePhases.
author | rkennke |
---|---|
date | Tue, 08 Sep 2015 21:00:24 +0200 |
parents | 06740c15a2b5 |
children | d9175ed51f4c |
files | src/share/vm/gc/shenandoah/shenandoahHeap.cpp src/share/vm/gc/shenandoah/shenandoahMarkCompact.cpp |
diffstat | 2 files changed, 9 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/gc/shenandoah/shenandoahHeap.cpp Tue Sep 08 20:59:48 2015 +0200 +++ b/src/share/vm/gc/shenandoah/shenandoahHeap.cpp Tue Sep 08 21:00:24 2015 +0200 @@ -246,36 +246,26 @@ }; void ShenandoahHeap::reset_mark_bitmap() { + if (ShenandoahTracePhases) { + tty->print_cr("Shenandoah starting concurrent reset bitmaps"); + } ShenandoahHeapRegionSet regions = ShenandoahHeapRegionSet(_num_regions, _ordered_regions, _num_regions); ResetBitmapTask task = ResetBitmapTask(®ions); conc_workers()->set_active_workers(_max_conc_workers); conc_workers()->run_task(&task); + if (ShenandoahTracePhases) { + tty->print_cr("Shenandoah finishing concurrent reset bitmaps"); + } } void ShenandoahHeap::reset_mark_bitmap_range(HeapWord* from, HeapWord* to) { _next_mark_bit_map->clearRange(MemRegion(from, to)); } -class BitmapClearClosure : public BitMapClosure { -private: - CMBitMap* _bm; - -public: - - BitmapClearClosure(CMBitMap* bm) : _bm(bm) { - } - - bool do_bit(BitMap::idx_t offset) { - HeapWord* hw = _bm->offsetToHeapWord(offset); - bool is_marked = _bm->isMarked(hw); - return ! is_marked; - } -}; - bool ShenandoahHeap::is_bitmap_clear() { - - BitmapClearClosure bitmap_clear_cl(_next_mark_bit_map); - return _next_mark_bit_map->iterate(&bitmap_clear_cl); + HeapWord* start = _ordered_regions[0]->bottom(); + HeapWord* end = _ordered_regions[_num_regions-1]->end(); + return _next_mark_bit_map->getNextMarkedWordAddress(start, end) == end; } void ShenandoahHeap::print_on(outputStream* st) const {
--- a/src/share/vm/gc/shenandoah/shenandoahMarkCompact.cpp Tue Sep 08 20:59:48 2015 +0200 +++ b/src/share/vm/gc/shenandoah/shenandoahMarkCompact.cpp Tue Sep 08 21:00:24 2015 +0200 @@ -127,8 +127,6 @@ _heap->verify_heap_after_update_refs(); } - _heap->reset_mark_bitmap(); - if (ShenandoahTraceFullGC) { gclog_or_tty->print_cr("Shenandoah-full-gc: finish with heap used: "SIZE_FORMAT" MB", _heap->used() / M); }