aboutsummaryrefslogtreecommitdiff
path: root/src/share/vm/gc_implementation/g1/g1RemSet.cpp
diff options
context:
space:
mode:
authorapetrusenko <none@none>2009-05-19 04:05:31 -0700
committerapetrusenko <none@none>2009-05-19 04:05:31 -0700
commit0b535ae44a966793c5bb85576dee9e68807b1173 (patch)
tree806a6b846b1bc30f83fb2ea5006a638cc612749b /src/share/vm/gc_implementation/g1/g1RemSet.cpp
parentaf04ae94d44d26870ca8c8d8cebe8d04c64dac34 (diff)
downloadjdk8u_hotspot-0b535ae44a966793c5bb85576dee9e68807b1173.tar.gz
6819065: G1: eliminate high serial card table clearing time
Reviewed-by: iveresov, tonyp
Diffstat (limited to 'src/share/vm/gc_implementation/g1/g1RemSet.cpp')
-rw-r--r--src/share/vm/gc_implementation/g1/g1RemSet.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/share/vm/gc_implementation/g1/g1RemSet.cpp b/src/share/vm/gc_implementation/g1/g1RemSet.cpp
index b6cf7d794..86a39a7f0 100644
--- a/src/share/vm/gc_implementation/g1/g1RemSet.cpp
+++ b/src/share/vm/gc_implementation/g1/g1RemSet.cpp
@@ -219,6 +219,7 @@ public:
HeapRegionRemSet* hrrs = r->rem_set();
if (hrrs->iter_is_complete()) return false; // All done.
if (!_try_claimed && !hrrs->claim_iter()) return false;
+ _g1h->push_dirty_cards_region(r);
// If we didn't return above, then
// _try_claimed || r->claim_iter()
// is true: either we're supposed to work on claimed-but-not-complete
@@ -242,6 +243,10 @@ public:
assert(card_region != NULL, "Yielding cards not in the heap?");
_cards++;
+ if (!card_region->is_on_dirty_cards_region_list()) {
+ _g1h->push_dirty_cards_region(card_region);
+ }
+
// If the card is dirty, then we will scan it during updateRS.
if (!card_region->in_collection_set() && !_ct_bs->is_card_dirty(card_index)) {
if (!_ct_bs->is_card_claimed(card_index) && _ct_bs->claim_card(card_index)) {