src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
Print this page
rev 6805 : imported patch commit-uncommit-within-heap
rev 6806 : imported patch mikael-suggestions
rev 6807 : imported patch bengt-suggestions
*** 371,391 ****
_max_regions = max_num_regions;
_cache = Padded2DArray<int, mtGC>::create_unfreeable(n_par_rs,
_max_regions,
&_static_mem_size);
! for (uint i = 0; i < n_par_rs; i++) {
! for (uint j = 0; j < _max_regions; j++) {
! set(i, j, InvalidCard);
! }
! }
}
! void FromCardCache::shrink(uint new_num_regions) {
for (uint i = 0; i < HeapRegionRemSet::num_par_rem_sets(); i++) {
! assert(new_num_regions <= _max_regions, "Must be within max.");
! for (uint j = new_num_regions; j < _max_regions; j++) {
set(i, j, InvalidCard);
}
}
}
--- 371,391 ----
_max_regions = max_num_regions;
_cache = Padded2DArray<int, mtGC>::create_unfreeable(n_par_rs,
_max_regions,
&_static_mem_size);
! invalidate(0, _max_regions);
}
! void FromCardCache::invalidate(uint start_idx, size_t new_num_regions) {
! guarantee((size_t)start_idx + new_num_regions <= max_uintx,
! err_msg("Trying to invalidate beyond maximum region, from %u size "SIZE_FORMAT,
! start_idx, new_num_regions));
for (uint i = 0; i < HeapRegionRemSet::num_par_rem_sets(); i++) {
! uint end_idx = (start_idx + (uint)new_num_regions);
! assert(end_idx <= _max_regions, "Must be within max.");
! for (uint j = start_idx; j < end_idx; j++) {
set(i, j, InvalidCard);
}
}
}
*** 405,420 ****
for (uint i = 0; i < num_par_remsets; i++) {
set(i, region_idx, InvalidCard);
}
}
! void OtherRegionsTable::init_from_card_cache(uint max_regions) {
FromCardCache::initialize(HeapRegionRemSet::num_par_rem_sets(), max_regions);
}
! void OtherRegionsTable::shrink_from_card_cache(uint new_num_regions) {
! FromCardCache::shrink(new_num_regions);
}
void OtherRegionsTable::print_from_card_cache() {
FromCardCache::print();
}
--- 405,420 ----
for (uint i = 0; i < num_par_remsets; i++) {
set(i, region_idx, InvalidCard);
}
}
! void OtherRegionsTable::initialize(uint max_regions) {
FromCardCache::initialize(HeapRegionRemSet::num_par_rem_sets(), max_regions);
}
! void OtherRegionsTable::invalidate(uint start_idx, size_t num_regions) {
! FromCardCache::invalidate(start_idx, num_regions);
}
void OtherRegionsTable::print_from_card_cache() {
FromCardCache::print();
}
*** 839,849 ****
HeapRegionRemSet::HeapRegionRemSet(G1BlockOffsetSharedArray* bosa,
HeapRegion* hr)
: _bosa(bosa),
_m(Mutex::leaf, FormatBuffer<128>("HeapRegionRemSet lock #%u", hr->hrs_index()), true),
! _code_roots(), _other_regions(hr, &_m) {
reset_for_par_iteration();
}
void HeapRegionRemSet::setup_remset_size() {
// Setup sparse and fine-grain tables sizes.
--- 839,849 ----
HeapRegionRemSet::HeapRegionRemSet(G1BlockOffsetSharedArray* bosa,
HeapRegion* hr)
: _bosa(bosa),
_m(Mutex::leaf, FormatBuffer<128>("HeapRegionRemSet lock #%u", hr->hrs_index()), true),
! _code_roots(), _other_regions(hr, &_m), _iter_state(Unclaimed), _iter_claimed(0) {
reset_for_par_iteration();
}
void HeapRegionRemSet::setup_remset_size() {
// Setup sparse and fine-grain tables sizes.