8269821: Remove is-queue-active check in inner loop of write_ref_array_pre_work
Reviewed-by: ayang, kbarrett
This commit is contained in:
parent
4da52eaf53
commit
675a9520b2
@ -71,12 +71,16 @@ void G1BarrierSet::enqueue(oop pre_val) {
|
||||
|
||||
template <class T> void
|
||||
G1BarrierSet::write_ref_array_pre_work(T* dst, size_t count) {
|
||||
if (!_satb_mark_queue_set.is_active()) return;
|
||||
G1SATBMarkQueueSet& queue_set = G1BarrierSet::satb_mark_queue_set();
|
||||
if (!queue_set.is_active()) return;
|
||||
|
||||
SATBMarkQueue& queue = G1ThreadLocalData::satb_mark_queue(Thread::current());
|
||||
|
||||
T* elem_ptr = dst;
|
||||
for (size_t i = 0; i < count; i++, elem_ptr++) {
|
||||
T heap_oop = RawAccess<>::oop_load(elem_ptr);
|
||||
if (!CompressedOops::is_null(heap_oop)) {
|
||||
enqueue(CompressedOops::decode_not_null(heap_oop));
|
||||
queue_set.enqueue_known_active(queue, CompressedOops::decode_not_null(heap_oop));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user