summaryrefslogtreecommitdiffstats
path: root/runtime/gc
diff options
context:
space:
mode:
authorMathieu Chartier <mathieuc@google.com>2015-04-07 10:39:04 -0700
committerMathieu Chartier <mathieuc@google.com>2015-04-07 10:42:46 -0700
commit4809d0a8a5fca85a67dd0588ead5dfbd0f1acf96 (patch)
tree12853aa2c6a6238cac7c66b5d5610735a2f31591 /runtime/gc
parent63a99fce3ceac3c9de1f47b88a75094e3e1ffba3 (diff)
downloadart-4809d0a8a5fca85a67dd0588ead5dfbd0f1acf96.zip
art-4809d0a8a5fca85a67dd0588ead5dfbd0f1acf96.tar.gz
art-4809d0a8a5fca85a67dd0588ead5dfbd0f1acf96.tar.bz2
Fix CC root visiting bug
Also some cleanup. Change-Id: Ia3de8f2d409770be3619ec116e8b06ecd82338fe
Diffstat (limited to 'runtime/gc')
-rw-r--r--runtime/gc/collector/concurrent_copying.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/runtime/gc/collector/concurrent_copying.cc b/runtime/gc/collector/concurrent_copying.cc
index 19d4e1a..6a68880 100644
--- a/runtime/gc/collector/concurrent_copying.cc
+++ b/runtime/gc/collector/concurrent_copying.cc
@@ -1148,11 +1148,11 @@ void ConcurrentCopying::VisitRoots(
mirror::Object** root = roots[i];
mirror::Object* ref = *root;
if (ref == nullptr || region_space_->IsInToSpace(ref)) {
- return;
+ continue;
}
mirror::Object* to_ref = Mark(ref);
if (to_ref == ref) {
- return;
+ continue;
}
Atomic<mirror::Object*>* addr = reinterpret_cast<Atomic<mirror::Object*>*>(root);
mirror::Object* expected_ref = ref;
@@ -1173,11 +1173,11 @@ void ConcurrentCopying::VisitRoots(
mirror::CompressedReference<mirror::Object>* root = roots[i];
mirror::Object* ref = root->AsMirrorPtr();
if (ref == nullptr || region_space_->IsInToSpace(ref)) {
- return;
+ continue;
}
mirror::Object* to_ref = Mark(ref);
if (to_ref == ref) {
- return;
+ continue;
}
auto* addr = reinterpret_cast<Atomic<mirror::CompressedReference<mirror::Object>>*>(root);
auto expected_ref = mirror::CompressedReference<mirror::Object>::FromMirrorPtr(ref);