Following up on CL 170735.
It's possible that the referent may potentially be cleared which would
cause a check failure. Avoid that.
Bug:
12687968
Bug:
23896462
Change-Id: I8ccc5936b61ceacf250624681e65307f23ce0405
<< "ref=" << ref << " rb_ptr=" << ref->GetReadBarrierPointer();
}
mirror::Object* referent = ref->GetReferent<kWithoutReadBarrier>();
- CHECK(referent != nullptr) << "Reference should not have been enqueued if referent is null";
- CHECK(concurrent_copying->IsInToSpace(referent))
- << "ref=" << ref << " rb_ptr=" << ref->GetReadBarrierPointer()
- << " referent=" << referent;
+ // The referent could be null if it's cleared by a mutator (Reference.clear()).
+ if (referent != nullptr) {
+ CHECK(concurrent_copying->IsInToSpace(referent))
+ << "ref=" << ref << " rb_ptr=" << ref->GetReadBarrierPointer()
+ << " referent=" << referent;
+ }
}
}
return ref;