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