Index: third_party/WebKit/Source/platform/heap/WrapperVisitor.h |
diff --git a/third_party/WebKit/Source/platform/heap/WrapperVisitor.h b/third_party/WebKit/Source/platform/heap/WrapperVisitor.h |
index a4fc9770b40bf4d861284984759e290d0c61198d..bd63dc073f2429efd81af61b96bc649acacb1d39 100644 |
--- a/third_party/WebKit/Source/platform/heap/WrapperVisitor.h |
+++ b/third_party/WebKit/Source/platform/heap/WrapperVisitor.h |
@@ -105,9 +105,10 @@ class PLATFORM_EXPORT WrapperVisitor { |
return; |
} |
- TraceTrait<T>::markWrapperNoTracing(this, traceable); |
- pushToMarkingDeque(TraceTrait<T>::traceMarkedWrapper, |
- TraceTrait<T>::heapObjectHeader, traceable); |
+ if (pushToMarkingDeque(TraceTrait<T>::traceMarkedWrapper, |
+ TraceTrait<T>::heapObjectHeader, traceable)) { |
+ TraceTrait<T>::markWrapperNoTracing(this, traceable); |
+ } |
} |
/** |
@@ -163,7 +164,8 @@ class PLATFORM_EXPORT WrapperVisitor { |
// don't require marking wrappers in all worlds, so just nop on those. |
} |
- virtual void pushToMarkingDeque( |
+ // Returns true if pushing to the marking deque was successful. |
+ virtual bool pushToMarkingDeque( |
void (*traceWrappersCallback)(const WrapperVisitor*, const void*), |
HeapObjectHeader* (*heapObjectHeaderCallback)(const void*), |
const void*) const = 0; |