Index: third_party/WebKit/Source/platform/heap/Handle.h |
diff --git a/third_party/WebKit/Source/platform/heap/Handle.h b/third_party/WebKit/Source/platform/heap/Handle.h |
index 69cb7575950ac9f977932624164767e83a43e6da..8a85126999402b48873de25152a86ee8946cf45d 100644 |
--- a/third_party/WebKit/Source/platform/heap/Handle.h |
+++ b/third_party/WebKit/Source/platform/heap/Handle.h |
@@ -410,6 +410,12 @@ public: |
template<typename U> |
CrossThreadPersistent(const Member<U>& other) : Parent(other) { } |
+ CrossThreadPersistent(WTF::HashTableDeletedValueType) : Parent(reinterpret_cast<T*>(-1)) |
+ { |
+ } |
+ |
+ bool isHashTableDeletedValue() const { return *this == reinterpret_cast<T*>(-1); } |
+ |
T* atomicGet() { return Parent::atomicGet(); } |
template<typename U> |
@@ -1116,6 +1122,11 @@ struct UntracedMemberHash : MemberHash<T> { |
STATIC_ONLY(UntracedMemberHash); |
}; |
+template <typename T> |
+struct CrossThreadPersistentHash : MemberHash<T> { |
+ STATIC_ONLY(CrossThreadPersistentHash); |
+}; |
+ |
// PtrHash is the default hash for hash tables with members. |
template <typename T> |
struct DefaultHash<blink::Member<T>> { |
@@ -1135,6 +1146,12 @@ struct DefaultHash<blink::UntracedMember<T>> { |
using Hash = UntracedMemberHash<T>; |
}; |
+template <typename T> |
+struct DefaultHash<blink::CrossThreadPersistent<T>> { |
+ STATIC_ONLY(DefaultHash); |
+ using Hash = CrossThreadPersistentHash<T>; |
+}; |
+ |
template<typename T> |
struct NeedsTracing<blink::Member<T>> { |
STATIC_ONLY(NeedsTracing); |