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