void DirtyCardQueueSet::abandon_logs() { assert(SafepointSynchronize::is_at_safepoint(), "Must be at safepoint."); clear(); // Since abandon is done only at safepoints, we can safely manipulate // these queues. for (JavaThread* t = Threads::first(); t; t = t->next()) { t->dirty_card_queue().reset(); } shared_dirty_card_queue()->reset(); }
void DirtyCardQueueSet::iterate_closure_all_threads(bool consume, size_t worker_i) { assert(SafepointSynchronize::is_at_safepoint(), "Must be at safepoint."); for(JavaThread* t = Threads::first(); t; t = t->next()) { bool b = t->dirty_card_queue().apply_closure(_closure, consume); guarantee(b, "Should not be interrupted."); } bool b = shared_dirty_card_queue()->apply_closure(_closure, consume, worker_i); guarantee(b, "Should not be interrupted."); }