Index: src/incremental-marking.cc |
diff --git a/src/incremental-marking.cc b/src/incremental-marking.cc |
index 6cb7aa4858d80ca1e096a14b06d862a3a1b8e46a..79139a068f65782c7382b6a2367bd21bb887a47b 100644 |
--- a/src/incremental-marking.cc |
+++ b/src/incremental-marking.cc |
@@ -410,7 +410,7 @@ void IncrementalMarking::Start() { |
if (heap_->old_pointer_space()->IsSweepingComplete() && |
heap_->old_data_space()->IsSweepingComplete()) { |
- StartMarking(); |
+ StartMarking(ALLOW_COMPACTION); |
} else { |
if (FLAG_trace_incremental_marking) { |
PrintF("[IncrementalMarking] Start sweeping.\n"); |
@@ -435,12 +435,12 @@ static void MarkObjectGreyDoNotEnqueue(Object* obj) { |
} |
-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(); |
state_ = MARKING; |
@@ -696,7 +696,7 @@ void IncrementalMarking::Step(intptr_t allocated_bytes) { |
if (state_ == SWEEPING) { |
if (heap_->old_pointer_space()->AdvanceSweeper(bytes_to_process) && |
heap_->old_data_space()->AdvanceSweeper(bytes_to_process)) { |
- StartMarking(); |
+ StartMarking(PREVENT_COMPACTION); |
} |
} else if (state_ == MARKING) { |
Map* filler_map = heap_->one_pointer_filler_map(); |