OSDN Git Service

Merge "Refactor the garbage collector driver (GarbageCollector::Run)."
authorHiroshi Yamauchi <yamauchi@google.com>
Fri, 21 Mar 2014 17:47:50 +0000 (17:47 +0000)
committerGerrit Code Review <noreply-gerritcodereview@google.com>
Fri, 21 Mar 2014 17:47:51 +0000 (17:47 +0000)
1  2 
runtime/gc/collector/mark_sweep.cc
runtime/gc/collector/mark_sweep.h
runtime/gc/heap.cc
runtime/gc/heap.h

@@@ -145,17 -145,13 +145,17 @@@ void MarkSweep::ProcessReferences(Threa
                                 &MarkObjectCallback, &ProcessMarkStackPausedCallback, this);
  }
  
 -void MarkSweep::PreProcessReferences(Thread* self) {
 -  timings_.NewSplit("PreProcessReferences");
 -  GetHeap()->ProcessSoftReferences(timings_, clear_soft_references_, &IsMarkedCallback,
 -                                   &MarkObjectCallback, &ProcessMarkStackPausedCallback, this);
 +void MarkSweep::PreProcessReferences() {
 +  if (IsConcurrent()) {
 +    // No reason to do this for non-concurrent GC since pre processing soft references only helps
 +    // pauses.
 +    timings_.NewSplit("PreProcessReferences");
 +    GetHeap()->ProcessSoftReferences(timings_, clear_soft_references_, &IsMarkedCallback,
 +                                     &MarkObjectCallback, &ProcessMarkStackPausedCallback, this);
 +  }
  }
  
bool MarkSweep::HandleDirtyObjectsPhase() {
void MarkSweep::HandleDirtyObjectsPhase() {
    TimingLogger::ScopedSplit split("(Paused)HandleDirtyObjectsPhase", &timings_);
    Thread* self = Thread::Current();
    Locks::mutator_lock_->AssertExclusiveHeld(self);
Simple merge
Simple merge
Simple merge