Revert "Reland "Allow compaction when incremental marking is on.""
authorulan <ulan@chromium.org>
Thu, 26 Mar 2015 15:54:51 +0000 (08:54 -0700)
committerCommit bot <commit-bot@chromium.org>
Thu, 26 Mar 2015 15:54:56 +0000 (15:54 +0000)
This reverts commit 89ba65fd4970130eea02b675e448a8219ae3d0dd.

Reason: crash in v8.detached_context_age_in_gc benchmark.

BUG=chromium:450824
LOG=NO
NOTRY=true
NOTREECHECKS=true
TBR=hpayer@chromium.org

Review URL: https://codereview.chromium.org/1034203002

Cr-Commit-Position: refs/heads/master@{#27483}

src/heap/incremental-marking.cc
src/heap/incremental-marking.h

index b3609e4..749fa5e 100644 (file)
@@ -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);
index 6a6f8c4..7d41cfe 100644 (file)
@@ -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);