Reviewers: Michael Achenbach,

Description:
Set the state of a swept page after being done with sweeping.

BUG=

Please review this at https://codereview.chromium.org/407093004/

SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge

Affected files (+40, -16 lines):
  M src/mark-compact.cc
  M test/mjsunit/mjsunit.status
  M test/webkit/webkit.status


Index: src/mark-compact.cc
diff --git a/src/mark-compact.cc b/src/mark-compact.cc
index 2e276d1a474ac313986d1da029aa658c9bf8b479..595d6ee3ce09ddf35ae26cd6a7f7444e78c48802 100644
--- a/src/mark-compact.cc
+++ b/src/mark-compact.cc
@@ -3267,12 +3267,6 @@ static int SweepPrecisely(PagedSpace* space,
     start_time = base::OS::TimeCurrentMillis();
   }

-  if (parallelism == MarkCompactCollector::SWEEP_IN_PARALLEL) {
-    p->set_parallel_sweeping(MemoryChunk::SWEEPING_FINALIZE);
-  } else {
-    p->MarkSweptPrecisely();
-  }
-
   Address free_start = p->area_start();
ASSERT(reinterpret_cast<intptr_t>(free_start) % (32 * kPointerSize) == 0);
   int offsets[16];
@@ -3346,6 +3340,14 @@ static int SweepPrecisely(PagedSpace* space,
   if (FLAG_print_cumulative_gc_stat) {
space->heap()->AddSweepingTime(base::OS::TimeCurrentMillis() - start_time);
   }
+
+  if (parallelism == MarkCompactCollector::SWEEP_IN_PARALLEL) {
+    // When concurrent sweeping is active, the page will be marked after
+    // sweeping by the main thread.
+    p->set_parallel_sweeping(MemoryChunk::SWEEPING_FINALIZE);
+  } else {
+    p->MarkSweptPrecisely();
+  }
return FreeList::GuaranteedAllocatable(static_cast<int>(max_freed_bytes));
 }

@@ -3999,14 +4001,6 @@ int MarkCompactCollector::SweepConservatively(PagedSpace* space,
          (mode == MarkCompactCollector::SWEEP_ON_MAIN_THREAD &&
          free_list == NULL));

-  // When parallel sweeping is active, the page will be marked after
-  // sweeping by the main thread.
-  if (mode == MarkCompactCollector::SWEEP_IN_PARALLEL) {
-    p->set_parallel_sweeping(MemoryChunk::SWEEPING_FINALIZE);
-  } else {
-    p->MarkSweptConservatively();
-  }
-
   intptr_t freed_bytes = 0;
   intptr_t max_freed_bytes = 0;
   size_t size = 0;
@@ -4027,6 +4021,13 @@ int MarkCompactCollector::SweepConservatively(PagedSpace* space,
                              static_cast<int>(size));
     max_freed_bytes = Max(freed_bytes, max_freed_bytes);
     ASSERT_EQ(0, p->LiveBytes());
+    if (mode == MarkCompactCollector::SWEEP_IN_PARALLEL) {
+      // When concurrent sweeping is active, the page will be marked after
+      // sweeping by the main thread.
+      p->set_parallel_sweeping(MemoryChunk::SWEEPING_FINALIZE);
+    } else {
+      p->MarkSweptConservatively();
+    }
return FreeList::GuaranteedAllocatable(static_cast<int>(max_freed_bytes));
   }

@@ -4084,6 +4085,13 @@ int MarkCompactCollector::SweepConservatively(PagedSpace* space,
   }

   p->ResetLiveBytes();
+  if (mode == MarkCompactCollector::SWEEP_IN_PARALLEL) {
+    // When concurrent sweeping is active, the page will be marked after
+    // sweeping by the main thread.
+    p->set_parallel_sweeping(MemoryChunk::SWEEPING_FINALIZE);
+  } else {
+    p->MarkSweptConservatively();
+  }
return FreeList::GuaranteedAllocatable(static_cast<int>(max_freed_bytes));
 }

Index: test/mjsunit/mjsunit.status
diff --git a/test/mjsunit/mjsunit.status b/test/mjsunit/mjsunit.status
index ee3feb0968a7885146d34a53a47f66207562ecd9..bd8474b42731eb1b5a6ee00d488e136ab954daaf 100644
--- a/test/mjsunit/mjsunit.status
+++ b/test/mjsunit/mjsunit.status
@@ -147,8 +147,16 @@
   'elements-transition-hoisting': [PASS, FAIL],
   'getters-on-elements': [PASS, FAIL],
   # Tests taking too long
-  'regress/regress-1122': [PASS, TIMEOUT],
-  'regress/regress-331444': [PASS, TIMEOUT],
+  'debug-stepout-scope-part8': [SKIP],
+  'mirror-object': [SKIP],
+  'packed-elements': [SKIP],
+  'regress/regress-1122': [SKIP],
+  'regress/regress-331444': [SKIP],
+  'regress/regress-353551': [SKIP],
+  'regress/regress-crbug-119926': [SKIP],
+  'regress/short-circuit': [SKIP],
+  'unicode-test': [SKIP],
+  'whitespaces': [SKIP]
 }],  # 'gc_stress == True'

##############################################################################
Index: test/webkit/webkit.status
diff --git a/test/webkit/webkit.status b/test/webkit/webkit.status
index c897fd4385e1e8b45f7cd956ff1c4eea1ceae402..616b9f81575b12869309e18944df3a781d86a093 100644
--- a/test/webkit/webkit.status
+++ b/test/webkit/webkit.status
@@ -48,3 +48,11 @@
   'dfg-int-overflow-in-loop': [SKIP],
 }],  # 'arch == arm64 and simulator_run == True'
 ]
+
+##############################################################################
+['gc_stress == True', {
+  # Tests taking too long
+  'fastt/js/excessive-comma-usage': [SKIP]
+}],  # 'gc_stress == True'
+
+##############################################################################


--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to