7035144: G1: nightly failure: Non-dirty cards in region that should be dirty (failures still exist...)

We should only undirty cards after we decide that they are not on a young region, not before. The fix also includes improvements to the verify_dirty_region() method which print out which cards were not found dirty.

Reviewed-by: johnc, brutisso
This commit is contained in:
Antonios Printezis 2011-04-29 14:59:04 -04:00
parent 8c04c76193
commit 10f6cc7fc3
9 changed files with 118 additions and 95 deletions

View file

@ -1899,7 +1899,7 @@ void ConcurrentMark::completeCleanup() {
while (!_cleanup_list.is_empty()) {
HeapRegion* hr = _cleanup_list.remove_head();
assert(hr != NULL, "the list was not empty");
hr->rem_set()->clear();
hr->par_clear();
tmp_free_list.add_as_tail(hr);
// Instead of adding one region at a time to the secondary_free_list,