summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/gc/accounting/remembered_set.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/runtime/gc/accounting/remembered_set.cc b/runtime/gc/accounting/remembered_set.cc
index 251b50d93b..70704c13c8 100644
--- a/runtime/gc/accounting/remembered_set.cc
+++ b/runtime/gc/accounting/remembered_set.cc
@@ -95,7 +95,11 @@ class RememberedSetReferenceVisitor {
void VisitRoot(mirror::CompressedReference<mirror::Object>* root) const
SHARED_REQUIRES(Locks::mutator_lock_) {
- DCHECK(!target_space_->HasAddress(root->AsMirrorPtr()));
+ if (target_space_->HasAddress(root->AsMirrorPtr())) {
+ *contains_reference_to_target_space_ = true;
+ root->Assign(collector_->MarkObject(root->AsMirrorPtr()));
+ DCHECK(!target_space_->HasAddress(root->AsMirrorPtr()));
+ }
}
private: