From bfff21aaa05d4fce39481cf7899f7639eb7fd66d Mon Sep 17 00:00:00 2001 From: Hiroshi Yamauchi Date: Fri, 9 May 2014 12:21:15 -0700 Subject: Reference::GetReferent() calls by GC should not trigger read barriers. Otherwise, GC's reference processing would turn all referents alive via read barriers, which is incorrect. Bug: 12687968 Change-Id: I1463365981d55fa74a7bb207dd4a16aeec007f8b --- runtime/gc/reference_processor.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'runtime/gc/reference_processor.cc') diff --git a/runtime/gc/reference_processor.cc b/runtime/gc/reference_processor.cc index 188b6b3f1a..c37f516255 100644 --- a/runtime/gc/reference_processor.cc +++ b/runtime/gc/reference_processor.cc @@ -172,7 +172,7 @@ void ReferenceProcessor::DelayReferenceReferent(mirror::Class* klass, mirror::Re IsMarkedCallback is_marked_callback, void* arg) { // klass can be the class of the old object if the visitor already updated the class of ref. DCHECK(klass->IsReferenceClass()); - mirror::Object* referent = ref->GetReferent(); + mirror::Object* referent = ref->GetReferent(); if (referent != nullptr) { mirror::Object* forward_address = is_marked_callback(referent, arg); // Null means that the object is not currently marked. @@ -219,4 +219,3 @@ void ReferenceProcessor::EnqueueClearedReferences() { } // namespace gc } // namespace art - -- cgit v1.2.3-59-g8ed1b