Lines Matching refs:Reference
24 #include "mirror/reference-inl.h"
41 condition_("reference processor condition", *Locks::reference_processor_lock_) ,
50 mirror::Reference::GetJavaLangRefReference()->SetSlowPath(true);
54 mirror::Reference::GetJavaLangRefReference()->SetSlowPath(false);
64 ObjPtr<mirror::Reference> reference) {
69 ObjPtr<mirror::Object> const referent = reference->GetReferent();
71 // scenario where it becomes non-null during the reference processing phase.
79 ObjPtr<mirror::Object> referent = reference->GetReferent<kWithoutReadBarrier>();
95 // Reference.clear() after we did the null check resulting in a null pointer being
101 (LIKELY(!reference->IsFinalizerReferenceInstance()) && reference->IsUnprocessed())) {
111 return reference->GetReferent();
126 // Process reference class instances and schedule finalizations.
144 // In transaction mode, we shouldn't enqueue any Reference to the queues.
187 // At this point all reference queues other than the cleared references should be empty.
195 // could result in a stale is_marked_callback_ being called before the reference processing
206 // Process the "referent" field in a java.lang.ref.Reference. If the referent has not yet been
209 ObjPtr<mirror::Reference> ref,
215 // do_atomic_update needs to be true because this happens outside of the reference processing
219 // In transaction mode, keep the referent alive and avoid any reference processing to avoid the
220 // issue of rolling back reference processing. do_atomic_update needs to be true because this
221 // happens outside of the reference processing phase.
230 // scanning the same reference multiple times due to dirty cards.
240 LOG(FATAL) << "Invalid reference type " << klass->PrettyClass() << " " << std::hex
269 // When a runtime isn't started there are no reference queues to care about so ignore.
292 void ReferenceProcessor::ClearReferent(ObjPtr<mirror::Reference> ref) {
295 // Need to wait until reference processing is done since IsMarkedHeapReference does not have a
308 // Wait until we are done processing reference.
319 ObjPtr<mirror::FinalizerReference> reference) {
323 // At this point, since the sentinel of the reference is live, it is guaranteed to not be
325 // phase. Since we are holding the reference processor lock, it guarantees that reference
326 // processing can't begin. The GC could have just enqueued the reference one one of the internal
330 if (reference->IsUnprocessed()) {
331 CHECK(reference->IsFinalizerReferenceInstance());
332 reference->SetPendingNext(reference);