diff options
author | Mathieu Chartier <mathieuc@google.com> | 2015-04-07 10:39:04 -0700 |
---|---|---|
committer | Mathieu Chartier <mathieuc@google.com> | 2015-04-07 10:42:46 -0700 |
commit | 4809d0a8a5fca85a67dd0588ead5dfbd0f1acf96 (patch) | |
tree | 12853aa2c6a6238cac7c66b5d5610735a2f31591 /runtime/gc | |
parent | 63a99fce3ceac3c9de1f47b88a75094e3e1ffba3 (diff) | |
download | art-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.cc | 8 |
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); |