Home | History | Annotate | Download | only in gc

Lines Matching refs:Reference

24 #include "mirror/reference-inl.h"
32 void ReferenceQueue::AtomicEnqueueIfNotEnqueued(Thread* self, ObjPtr<mirror::Reference> ref) {
40 void ReferenceQueue::EnqueueReference(ObjPtr<mirror::Reference> ref) {
44 // 1 element cyclic queue, ie: Reference ref = ..; ref.pendingNext = ref;
49 ObjPtr<mirror::Reference> head = list_->GetPendingNext<kWithoutReadBarrier>();
53 // Add the reference in the middle to preserve the cycle.
57 ObjPtr<mirror::Reference> ReferenceQueue::DequeuePendingReference() {
59 ObjPtr<mirror::Reference> ref = list_->GetPendingNext<kWithoutReadBarrier>();
66 ObjPtr<mirror::Reference> next = ref->GetPendingNext<kWithoutReadBarrier>();
74 void ReferenceQueue::DisableReadBarrierForReference(ObjPtr<mirror::Reference> ref) {
88 // In ConcurrentCopying::ProcessMarkStackRef() we may leave a white reference in the queue and
92 // The referent could be null if it's cleared by a mutator (Reference.clear()).
103 ObjPtr<mirror::Reference> cur = list_;
104 os << "Reference starting at list_=" << list_ << "\n";
109 ObjPtr<mirror::Reference> pending_next = cur->GetPendingNext();
110 os << "Reference= " << cur << " PendingNext=" << pending_next;
121 ObjPtr<mirror::Reference> cur = list_;
134 ObjPtr<mirror::Reference> ref = DequeuePendingReference();
136 // do_atomic_update is false because this happens during the reference processing phase where
137 // Reference.clear() would block.
158 // do_atomic_update is false because this happens during the reference processing phase where
159 // Reference.clear() would block.
182 ObjPtr<mirror::Reference> const head = list_;
183 ObjPtr<mirror::Reference> ref = head;
197 list_ = down_cast<mirror::Reference*>(visitor->IsMarked(list_));