Index: Source/platform/heap/MarkingVisitorImpl.h |
diff --git a/Source/platform/heap/MarkingVisitorImpl.h b/Source/platform/heap/MarkingVisitorImpl.h |
index 27c8964e1f03c987231b0d8aa3313476146b6479..3265caa2dacdc26c2eca8e02514691e19e8e94a6 100644 |
--- a/Source/platform/heap/MarkingVisitorImpl.h |
+++ b/Source/platform/heap/MarkingVisitorImpl.h |
@@ -70,6 +70,9 @@ protected: |
inline void registerWeakMembers(const void* closure, const void* objectPointer, WeakCallback callback) |
{ |
ASSERT(toDerived()->markingMode() != Visitor::WeakProcessing); |
+ // We don't want to run weak processings when taking a snapshot. |
+ if (toDerived()->markingMode() == Visitor::SnapshotMarking) |
+ return; |
Heap::pushThreadLocalWeakCallback(const_cast<void*>(closure), const_cast<void*>(objectPointer), callback); |
} |
@@ -117,6 +120,9 @@ protected: |
inline void registerWeakCellWithCallback(void** cell, WeakCallback callback) |
{ |
ASSERT(toDerived()->markingMode() != Visitor::WeakProcessing); |
+ // We don't want to run weak processings when taking a snapshot. |
+ if (toDerived()->markingMode() == Visitor::SnapshotMarking) |
+ return; |
Heap::pushGlobalWeakCallback(cell, callback); |
} |