< prev index next >
src/hotspot/share/gc/g1/g1ConcurrentMark.cpp
Print this page
rev 55389 : [mq]: satb_lock_free
@@ -2417,15 +2417,16 @@
while (!has_aborted() &&
satb_mq_set.apply_closure_to_completed_buffer(&satb_cl)) {
abort_marking_if_regular_check_fail();
}
- _draining_satb_buffers = false;
+ // Can't assert qset is empty here, even if not aborted. If concurrent,
+ // some other thread might be adding to the queue. If not concurrent,
+ // some other thread might have won the race for the last buffer, but
+ // has not yet decremented the count.
- assert(has_aborted() ||
- _cm->concurrent() ||
- satb_mq_set.completed_buffers_num() == 0, "invariant");
+ _draining_satb_buffers = false;
// again, this was a potentially expensive operation, decrease the
// limits to get the regular clock call early
decrease_limits();
}
< prev index next >