From 371ae8c7adf339b10bdeff7719560837ef8648e7 Mon Sep 17 00:00:00 2001 From: ishell Date: Fri, 20 Mar 2015 09:07:02 -0700 Subject: [PATCH] Revert of Allow compaction when incremental marking is on. (patchset #1 id:1 of https://codereview.chromium.org/1014263002/) Reason for revert: It seems to cause crbug/469146. Original issue's description: > Allow compaction when incremental marking is on. > > BUG=chromium:450824 > LOG=NO > > Committed: https://crrev.com/92f96e4e9a527fcb085b68f81ee14b26acdd4719 > Cr-Commit-Position: refs/heads/master@{#27267} TBR=hpayer@chromium.org,ulan@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:450824 Review URL: https://codereview.chromium.org/1026813002 Cr-Commit-Position: refs/heads/master@{#27345} --- src/heap/incremental-marking.cc | 14 ++++++++------ src/heap/incremental-marking.h | 6 ++++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/heap/incremental-marking.cc b/src/heap/incremental-marking.cc index b3609e4adcf..749fa5ef549 100644 --- a/src/heap/incremental-marking.cc +++ b/src/heap/incremental-marking.cc @@ -468,7 +468,7 @@ static void PatchIncrementalMarkingRecordWriteStubs( } -void IncrementalMarking::Start() { +void IncrementalMarking::Start(CompactionFlag flag) { if (FLAG_trace_incremental_marking) { PrintF("[IncrementalMarking] Start\n"); } @@ -483,7 +483,7 @@ void IncrementalMarking::Start() { was_activated_ = true; if (!heap_->mark_compact_collector()->sweeping_in_progress()) { - StartMarking(); + StartMarking(flag); } else { if (FLAG_trace_incremental_marking) { PrintF("[IncrementalMarking] Start sweeping.\n"); @@ -495,12 +495,12 @@ void IncrementalMarking::Start() { } -void IncrementalMarking::StartMarking() { +void IncrementalMarking::StartMarking(CompactionFlag flag) { if (FLAG_trace_incremental_marking) { PrintF("[IncrementalMarking] Start marking\n"); } - is_compacting_ = !FLAG_never_compact && + is_compacting_ = !FLAG_never_compact && (flag == ALLOW_COMPACTION) && heap_->mark_compact_collector()->StartCompaction( MarkCompactCollector::INCREMENTAL_COMPACTION); @@ -834,7 +834,9 @@ void IncrementalMarking::Epilogue() { void IncrementalMarking::OldSpaceStep(intptr_t allocated) { if (IsStopped() && ShouldActivate()) { - Start(); + // TODO(hpayer): Let's play safe for now, but compaction should be + // in principle possible. + Start(PREVENT_COMPACTION); } else { Step(allocated * kFastMarking / kInitialMarkingSpeed, GC_VIA_STACK_GUARD); } @@ -963,7 +965,7 @@ intptr_t IncrementalMarking::Step(intptr_t allocated_bytes, } if (!heap_->mark_compact_collector()->sweeping_in_progress()) { bytes_scanned_ = 0; - StartMarking(); + StartMarking(PREVENT_COMPACTION); } } else if (state_ == MARKING) { bytes_processed = ProcessMarkingDeque(bytes_to_process); diff --git a/src/heap/incremental-marking.h b/src/heap/incremental-marking.h index 6a6f8c4abb5..7d41cfef415 100644 --- a/src/heap/incremental-marking.h +++ b/src/heap/incremental-marking.h @@ -67,7 +67,9 @@ class IncrementalMarking { bool WasActivated(); - void Start(); + enum CompactionFlag { ALLOW_COMPACTION, PREVENT_COMPACTION }; + + void Start(CompactionFlag flag = ALLOW_COMPACTION); void Stop(); @@ -206,7 +208,7 @@ class IncrementalMarking { void ResetStepCounters(); - void StartMarking(); + void StartMarking(CompactionFlag flag); void ActivateIncrementalWriteBarrier(PagedSpace* space); static void ActivateIncrementalWriteBarrier(NewSpace* space);