diff options
author | 2016-12-13 17:55:33 +0000 | |
---|---|---|
committer | 2016-12-13 17:55:34 +0000 | |
commit | aa2657d6d9dda2e44c6452e5f5901db78ef9b3cc (patch) | |
tree | 2168251c93190714e9b943379c69a76a65a7a2e5 | |
parent | ea63e4d1c3473d1115c1aef674056d035cf67472 (diff) | |
parent | 39c12d4d20bfbd1c4b6efac0e7ca70ed631ab27d (diff) |
Merge "Fix CC DCHECK failure in 152-gc-and-run-finalization."
-rw-r--r-- | runtime/gc/collector/concurrent_copying.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/runtime/gc/collector/concurrent_copying.cc b/runtime/gc/collector/concurrent_copying.cc index fbab73f022..b8899137bc 100644 --- a/runtime/gc/collector/concurrent_copying.cc +++ b/runtime/gc/collector/concurrent_copying.cc @@ -1360,9 +1360,10 @@ inline void ConcurrentCopying::ProcessMarkStackRef(mirror::Object* to_ref) { << " is_marked=" << IsMarked(to_ref); } #ifdef USE_BAKER_OR_BROOKS_READ_BARRIER + mirror::Object* referent = nullptr; if (UNLIKELY((to_ref->GetClass<kVerifyNone, kWithoutReadBarrier>()->IsTypeOfReferenceClass() && - to_ref->AsReference()->GetReferent<kWithoutReadBarrier>() != nullptr && - !IsInToSpace(to_ref->AsReference()->GetReferent<kWithoutReadBarrier>())))) { + (referent = to_ref->AsReference()->GetReferent<kWithoutReadBarrier>()) != nullptr && + !IsInToSpace(referent)))) { // Leave this reference gray in the queue so that GetReferent() will trigger a read barrier. We // will change it to white later in ReferenceQueue::DequeuePendingReference(). DCHECK(to_ref->AsReference()->GetPendingNext() != nullptr) << "Left unenqueued ref gray " << to_ref; |