From: Hiroshi Yamauchi Date: Fri, 21 Mar 2014 17:47:50 +0000 (+0000) Subject: Merge "Refactor the garbage collector driver (GarbageCollector::Run)." X-Git-Tag: android-x86-7.1-r1~889^2~4558 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=c7b4dfb8db21528b179689a80b69d868de394ef1;p=android-x86%2Fart.git Merge "Refactor the garbage collector driver (GarbageCollector::Run)." --- c7b4dfb8db21528b179689a80b69d868de394ef1 diff --cc runtime/gc/collector/mark_sweep.cc index 76a7410e7,3e5fbcd60..9fe904cf1 --- a/runtime/gc/collector/mark_sweep.cc +++ b/runtime/gc/collector/mark_sweep.cc @@@ -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);