src/share/vm/gc_implementation/g1/g1RemSet.cpp

changeset 7647
80ac3ee51955
parent 7218
6948da6d7c13
child 7655
8e9ede9dd2cd
     1.1 --- a/src/share/vm/gc_implementation/g1/g1RemSet.cpp	Tue Mar 24 10:04:10 2015 +0000
     1.2 +++ b/src/share/vm/gc_implementation/g1/g1RemSet.cpp	Wed Mar 25 11:03:16 2015 +0100
     1.3 @@ -147,11 +147,9 @@
     1.4  
     1.5      // Set the "from" region in the closure.
     1.6      _oc->set_region(r);
     1.7 -    HeapWord* card_start = _bot_shared->address_for_index(index);
     1.8 -    HeapWord* card_end = card_start + G1BlockOffsetSharedArray::N_words;
     1.9 -    Space *sp = SharedHeap::heap()->space_containing(card_start);
    1.10 -    MemRegion sm_region = sp->used_region_at_save_marks();
    1.11 -    MemRegion mr = sm_region.intersection(MemRegion(card_start,card_end));
    1.12 +    MemRegion card_region(_bot_shared->address_for_index(index), G1BlockOffsetSharedArray::N_words);
    1.13 +    MemRegion pre_gc_allocated(r->bottom(), r->scan_top());
    1.14 +    MemRegion mr = pre_gc_allocated.intersection(card_region);
    1.15      if (!mr.is_empty() && !_ct_bs->is_card_claimed(index)) {
    1.16        // We make the card as "claimed" lazily (so races are possible
    1.17        // but they're benign), which reduces the number of duplicate

mercurial