< prev index next >

src/share/vm/gc/g1/g1ConcurrentMark.cpp

Print this page
rev 13279 : 8182169: ArrayAllocator should take MEMFLAGS as regular parameter
Reviewed-by: tschatzl, kbarrett
rev 13282 : imported patch 8184346-cleanup-g1cmbitmap
rev 13283 : imported patch 8184346-rkennke-review
rev 13284 : [mq]: 8184346-erikd-mgerdin-review

*** 58,77 **** #include "runtime/prefetch.inline.hpp" #include "services/memTracker.hpp" #include "utilities/align.hpp" #include "utilities/growableArray.hpp" - #ifndef PRODUCT - bool G1CMBitMap::covers(MemRegion heap_rs) const { - // assert(_bm.map() == _virtual_space.low(), "map inconsistency"); - assert(((size_t)_bm.size() * ((size_t)1 << _shifter)) == _word_size, - "size inconsistency"); - return _start == (HeapWord*)(heap_rs.start()) && - _word_size == heap_rs.word_size(); - } - #endif - void G1CMBitMap::print_on_error(outputStream* st, const char* prefix) const { _bm.print_on_error(st, prefix); } size_t G1CMBitMap::compute_size(size_t heap_size) { --- 58,67 ----
*** 81,98 **** size_t G1CMBitMap::mark_distance() { return MinObjAlignmentInBytes * BitsPerByte; } void G1CMBitMap::initialize(MemRegion heap, G1RegionToSpaceMapper* storage) { ! _start = heap.start(); ! _word_size = heap.word_size(); ! _bm = BitMapView((BitMap::bm_word_t*) storage->reserved().start(), _word_size >> _shifter); storage->set_mapping_changed_listener(&_listener); - - assert(covers(heap), "Bitmap initialization inconsistency, does not cover expected memory area."); } void G1CMBitMapMappingChangedListener::on_commit(uint start_region, size_t num_regions, bool zero_filled) { if (zero_filled) { return; --- 71,85 ---- size_t G1CMBitMap::mark_distance() { return MinObjAlignmentInBytes * BitsPerByte; } void G1CMBitMap::initialize(MemRegion heap, G1RegionToSpaceMapper* storage) { ! _covered = heap; ! _bm = BitMapView((BitMap::bm_word_t*) storage->reserved().start(), _covered.word_size() >> _shifter); storage->set_mapping_changed_listener(&_listener); } void G1CMBitMapMappingChangedListener::on_commit(uint start_region, size_t num_regions, bool zero_filled) { if (zero_filled) { return;
*** 101,115 **** MemRegion mr(G1CollectedHeap::heap()->bottom_addr_for_region(start_region), num_regions * HeapRegion::GrainWords); _bm->clear_range(mr); } void G1CMBitMap::clear_range(MemRegion mr) { ! mr.intersection(MemRegion(_start, _word_size)); ! assert(!mr.is_empty(), "unexpected empty region"); // convert address range into offset range ! _bm.at_put_range(addr_to_offset(mr.start()), ! addr_to_offset(mr.end()), false); } G1CMMarkStack::G1CMMarkStack() : _max_chunk_capacity(0), _base(NULL), --- 88,102 ---- MemRegion mr(G1CollectedHeap::heap()->bottom_addr_for_region(start_region), num_regions * HeapRegion::GrainWords); _bm->clear_range(mr); } void G1CMBitMap::clear_range(MemRegion mr) { ! MemRegion intersection = mr.intersection(_covered); ! assert(!intersection.is_empty(), "Given range from " PTR_FORMAT " to " PTR_FORMAT " is completely outside the heap", p2i(mr.start()), p2i(mr.end())); // convert address range into offset range ! _bm.at_put_range(addr_to_offset(intersection.start()), ! addr_to_offset(intersection.end()), false); } G1CMMarkStack::G1CMMarkStack() : _max_chunk_capacity(0), _base(NULL),
< prev index next >