< prev index next >
src/share/vm/gc/g1/g1RemSet.cpp
Print this page
rev 12059 : [mq]: no_requeue
@@ -667,34 +667,14 @@
// change at any time (so an earlier "is_young" check may pass or
// fail arbitrarily). We tell the iteration code to perform this
// 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++;
- }
// This gets set to true if the card being refined has
// references that point into the collection set.
bool has_refs_into_cset = trigger_cl.triggered();
< prev index next >