equal
deleted
inserted
replaced
3375 void par_apply(RedirtyLoggedCardTableEntryClosure* cl, uint worker_id) { |
3375 void par_apply(RedirtyLoggedCardTableEntryClosure* cl, uint worker_id) { |
3376 size_t buffer_size = _qset->buffer_size(); |
3376 size_t buffer_size = _qset->buffer_size(); |
3377 BufferNode* next = Atomic::load(&_nodes); |
3377 BufferNode* next = Atomic::load(&_nodes); |
3378 while (next != NULL) { |
3378 while (next != NULL) { |
3379 BufferNode* node = next; |
3379 BufferNode* node = next; |
3380 next = Atomic::cmpxchg(node->next(), &_nodes, node); |
3380 next = Atomic::cmpxchg(&_nodes, node, node->next()); |
3381 if (next == node) { |
3381 if (next == node) { |
3382 cl->apply_to_buffer(node, buffer_size, worker_id); |
3382 cl->apply_to_buffer(node, buffer_size, worker_id); |
3383 next = node->next(); |
3383 next = node->next(); |
3384 } |
3384 } |
3385 } |
3385 } |