--- old/src/share/vm/gc/g1/g1RemSet.cpp 2016-09-29 18:05:37.083244791 -0400 +++ new/src/share/vm/gc/g1/g1RemSet.cpp 2016-09-29 18:05:36.979244276 -0400 @@ -669,30 +669,10 @@ // filtering when it has been determined that there has been an actual // allocation in this region and making it safe to check the young type. - bool card_processed = - r->oops_on_card_seq_iterate_careful(dirtyRegion, - &filter_then_update_rs_oop_cl, - card_ptr); - - // If unable to process the card then we encountered an unparsable - // part of the heap (e.g. a partially allocated object). Redirty - // and re-enqueue: if we put off the card until a GC pause, then the - // allocation will have completed. - if (!card_processed) { - assert(!_g1->is_gc_active(), "Unparsable heap during GC"); - // The card might have gotten re-dirtied and re-enqueued while we - // worked. (In fact, it's pretty likely.) - if (*card_ptr != CardTableModRefBS::dirty_card_val()) { - *card_ptr = CardTableModRefBS::dirty_card_val(); - MutexLockerEx x(Shared_DirtyCardQ_lock, - Mutex::_no_safepoint_check_flag); - DirtyCardQueue* sdcq = - JavaThread::dirty_card_queue_set().shared_dirty_card_queue(); - sdcq->enqueue(card_ptr); - } - } else { - _conc_refine_cards++; - } + r->oops_on_card_seq_iterate_careful(dirtyRegion, + &filter_then_update_rs_oop_cl, + card_ptr); + _conc_refine_cards++; // This gets set to true if the card being refined has // references that point into the collection set.