OSDN Git Service

Fix CC collector boot.
authorHiroshi Yamauchi <yamauchi@google.com>
Thu, 12 Mar 2015 02:09:07 +0000 (19:09 -0700)
committerHiroshi Yamauchi <yamauchi@google.com>
Thu, 12 Mar 2015 02:11:08 +0000 (19:11 -0700)
Avoid a DCHECK failure that the semi space collector isn't initialized
at the pre-zygote fork time when the CC collector is used.

Change-Id: If35707b241be05a341abb11ba51fbd0bc222d219

runtime/gc/heap.cc

index a41d65c..c421262 100644 (file)
@@ -2064,8 +2064,6 @@ void Heap::PreZygoteFork() {
   non_moving_space_->GetMemMap()->Protect(PROT_READ | PROT_WRITE);
   const bool same_space = non_moving_space_ == main_space_;
   if (kCompactZygote) {
-    // Can't compact if the non moving space is the same as the main space.
-    DCHECK(semi_space_collector_ != nullptr);
     // Temporarily disable rosalloc verification because the zygote
     // compaction will mess up the rosalloc internal metadata.
     ScopedDisableRosAllocVerification disable_rosalloc_verif(this);
@@ -2084,6 +2082,8 @@ void Heap::PreZygoteFork() {
       }
     } else {
       CHECK(main_space_ != nullptr);
+      CHECK_NE(main_space_, non_moving_space_)
+          << "Does not make sense to compact within the same space";
       // Copy from the main space.
       zygote_collector.SetFromSpace(main_space_);
       reset_main_space = true;