OSDN Git Service

Avoid unnecessarily clearing/resetting region_space_ for each GC.
authorHiroshi Yamauchi <yamauchi@google.com>
Tue, 25 Oct 2016 18:55:10 +0000 (11:55 -0700)
committerHiroshi Yamauchi <yamauchi@google.com>
Tue, 25 Oct 2016 18:56:23 +0000 (11:56 -0700)
Bug: 12687968
Test: test-art-host with CC.
Change-Id: Idf8e6753ba9de23866e15634a093b47ae6a5c239

runtime/gc/collector/concurrent_copying.cc
runtime/gc/heap.cc

index 13af67e..33ee962 100644 (file)
@@ -2325,7 +2325,6 @@ void ConcurrentCopying::FinishPhase() {
     MutexLock mu(self, mark_stack_lock_);
     CHECK_EQ(pooled_mark_stacks_.size(), kMarkStackPoolSize);
   }
-  region_space_ = nullptr;
   {
     MutexLock mu(Thread::Current(), skipped_blocks_lock_);
     skipped_blocks_map_.clear();
index 3b9abd2..1bb84fc 100644 (file)
@@ -612,6 +612,8 @@ Heap::Heap(size_t initial_size,
       concurrent_copying_collector_ = new collector::ConcurrentCopying(this,
                                                                        "",
                                                                        measure_gc_performance);
+      DCHECK(region_space_ != nullptr);
+      concurrent_copying_collector_->SetRegionSpace(region_space_);
       garbage_collectors_.push_back(concurrent_copying_collector_);
     }
     if (MayUseCollector(kCollectorTypeMC)) {
@@ -2708,7 +2710,6 @@ collector::GcType Heap::CollectGarbageInternal(collector::GcType gc_type,
         collector = semi_space_collector_;
         break;
       case kCollectorTypeCC:
-        concurrent_copying_collector_->SetRegionSpace(region_space_);
         collector = concurrent_copying_collector_;
         break;
       case kCollectorTypeMC: