1.1 --- a/src/share/vm/gc_implementation/g1/g1RemSet.cpp Mon May 18 11:52:46 2009 -0700 1.2 +++ b/src/share/vm/gc_implementation/g1/g1RemSet.cpp Tue May 19 04:05:31 2009 -0700 1.3 @@ -219,6 +219,7 @@ 1.4 HeapRegionRemSet* hrrs = r->rem_set(); 1.5 if (hrrs->iter_is_complete()) return false; // All done. 1.6 if (!_try_claimed && !hrrs->claim_iter()) return false; 1.7 + _g1h->push_dirty_cards_region(r); 1.8 // If we didn't return above, then 1.9 // _try_claimed || r->claim_iter() 1.10 // is true: either we're supposed to work on claimed-but-not-complete 1.11 @@ -242,6 +243,10 @@ 1.12 assert(card_region != NULL, "Yielding cards not in the heap?"); 1.13 _cards++; 1.14 1.15 + if (!card_region->is_on_dirty_cards_region_list()) { 1.16 + _g1h->push_dirty_cards_region(card_region); 1.17 + } 1.18 + 1.19 // If the card is dirty, then we will scan it during updateRS. 1.20 if (!card_region->in_collection_set() && !_ct_bs->is_card_dirty(card_index)) { 1.21 if (!_ct_bs->is_card_claimed(card_index) && _ct_bs->claim_card(card_index)) {