void G1BarrierSet::on_thread_create(Thread* thread) { // Create thread local data
G1ThreadLocalData::create(thread);
}
void G1BarrierSet::on_thread_destroy(Thread* thread) { // Destroy thread local data
G1ThreadLocalData::destroy(thread);
}
void G1BarrierSet::on_thread_attach(Thread* thread) {
BarrierSet::on_thread_attach(thread);
SATBMarkQueue& queue = G1ThreadLocalData::satb_mark_queue(thread);
assert(!queue.is_active(), "SATB queue should not be active");
assert(queue.buffer() == nullptr, "SATB queue should not have a buffer");
assert(queue.index() == 0, "SATB queue index should be zero"); // Can't assert that the DCQ is empty. There is early execution on // the main thread, before it gets added to the threads list, which // is where this is called. That execution may enqueue dirty cards.
// If we are creating the thread during a marking cycle, we should // set the active field of the SATB queue to true. That involves // copying the global is_active value to this thread's queue.
queue.set_active(_satb_mark_queue_set.is_active());
}
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.11Bemerkung:
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.