Reviewers: Mads Ager,

Description:
Ensure that empty descriptor array is marked before visiting any maps in marking
phase.

Please review this at http://codereview.chromium.org/3318014/show

Affected files:
  M src/mark-compact.cc


Index: src/mark-compact.cc
diff --git a/src/mark-compact.cc b/src/mark-compact.cc
index 162b3d63957872715ab5d51adbbba7fc61f58fd4..a9e852ef32747ef8e2385353f1f7ffd8c9733587 100644
--- a/src/mark-compact.cc
+++ b/src/mark-compact.cc
@@ -643,9 +643,13 @@ void MarkCompactCollector::PrepareForCodeFlushing() {
 #endif
   StaticMarkingVisitor::EnableCodeFlushing(true);

+ // Ensure that empty descriptor array is marked. Method MarkDescriptorArray
+  // relies on it being marked before any other descriptor array.
+  MarkObject(Heap::raw_unchecked_empty_descriptor_array());
+
   // Make sure we are not referencing the code from the stack.
   for (StackFrameIterator it; !it.done(); it.Advance()) {
-    MarkCompactCollector::MarkObject(it.frame()->unchecked_code());
+    MarkObject(it.frame()->unchecked_code());
   }

   // Iterate the archived stacks in all threads to check if
@@ -656,7 +660,7 @@ void MarkCompactCollector::PrepareForCodeFlushing() {
   SharedFunctionInfoMarkingVisitor visitor;
   CompilationCache::IterateFunctions(&visitor);

-  MarkCompactCollector::ProcessMarkingStack();
+  ProcessMarkingStack();
 }




--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to