Commit d6273490 authored by Omer Katz's avatar Omer Katz Committed by Commit Bot

heap: Remove SameThreadCheckedMember

SameThreadCheckedMember is never used and just adds complexity to
the codebase

Bug: 986235
Change-Id: I3f7e870c6a6ebdfc9a312531636573c0042f4074
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1899620Reviewed-by: default avatarMichael Lippautz <mlippautz@chromium.org>
Commit-Queue: Omer Katz <omerkatz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#712559}
parent 049c4519
......@@ -736,17 +736,6 @@ struct VectorTraits<blink::Member<T>> : VectorTraitsBase<blink::Member<T>> {
static const bool kCanMoveWithMemcpy = true;
};
template <typename T>
struct VectorTraits<blink::SameThreadCheckedMember<T>>
: VectorTraitsBase<blink::SameThreadCheckedMember<T>> {
STATIC_ONLY(VectorTraits);
static const bool kNeedsDestruction = false;
static const bool kCanInitializeWithMemset = true;
static const bool kCanClearUnusedSlotsWithMemset = true;
static const bool kCanMoveWithMemcpy = true;
static const bool kCanSwapUsingCopyOrMove = false;
};
template <typename T>
struct VectorTraits<blink::WeakMember<T>>
: VectorTraitsBase<blink::WeakMember<T>> {
......@@ -846,42 +835,6 @@ struct HashTraits<blink::Member<T>> : SimpleClassHashTraits<blink::Member<T>> {
}
};
template <typename T>
struct HashTraits<blink::SameThreadCheckedMember<T>>
: SimpleClassHashTraits<blink::SameThreadCheckedMember<T>> {
STATIC_ONLY(HashTraits);
// FIXME: Implement proper const'ness for iterator types. Requires support
// in the marking Visitor.
using PeekInType = T*;
using IteratorGetType = blink::SameThreadCheckedMember<T>*;
using IteratorConstGetType = const blink::SameThreadCheckedMember<T>*;
using IteratorReferenceType = blink::SameThreadCheckedMember<T>&;
using IteratorConstReferenceType = const blink::SameThreadCheckedMember<T>&;
static IteratorReferenceType GetToReferenceConversion(IteratorGetType x) {
return *x;
}
static IteratorConstReferenceType GetToReferenceConstConversion(
IteratorConstGetType x) {
return *x;
}
using PeekOutType = T*;
template <typename U>
static void Store(const U& value,
blink::SameThreadCheckedMember<T>& storage) {
storage = value;
}
static PeekOutType Peek(const blink::SameThreadCheckedMember<T>& value) {
return value;
}
static blink::SameThreadCheckedMember<T> EmptyValue() {
return blink::SameThreadCheckedMember<T>(nullptr, nullptr);
}
};
template <typename T>
struct HashTraits<blink::WeakMember<T>>
: SimpleClassHashTraits<blink::WeakMember<T>> {
......
......@@ -326,99 +326,6 @@ class Member : public MemberBase<T, TracenessMemberConfiguration::kTraced> {
friend class WTF::ConstructTraits;
};
// A checked version of Member<>, verifying that only same-thread references
// are kept in the smart pointer. Intended to be used to diagnose unclean
// thread reference usage in release builds. It simply exposes the debug-only
// MemberBase<> checking we already have in place for select usage to diagnose
// per-thread issues. Only intended used temporarily while diagnosing suspected
// problems with cross-thread references.
template <typename T>
class SameThreadCheckedMember : public Member<T> {
DISALLOW_NEW();
typedef Member<T> Parent;
public:
SameThreadCheckedMember() : Parent() { SaveCreationThreadState(); }
SameThreadCheckedMember(std::nullptr_t) : Parent(nullptr) {
SaveCreationThreadState();
}
SameThreadCheckedMember(T* raw) : Parent(raw) {
SaveCreationThreadState();
CheckPointer();
}
SameThreadCheckedMember(T& raw) : Parent(raw) {
SaveCreationThreadState();
CheckPointer();
}
SameThreadCheckedMember(WTF::HashTableDeletedValueType x) : Parent(x) {
SaveCreationThreadState();
CheckPointer();
}
SameThreadCheckedMember(const SameThreadCheckedMember& other)
: Parent(other) {
SaveCreationThreadState();
}
template <typename U>
SameThreadCheckedMember(const SameThreadCheckedMember<U>& other)
: Parent(other) {
SaveCreationThreadState();
CheckPointer();
}
template <typename U>
SameThreadCheckedMember(const Persistent<U>& other) : Parent(other) {
SaveCreationThreadState();
CheckPointer();
}
template <typename U>
SameThreadCheckedMember& operator=(const Persistent<U>& other) {
Parent::operator=(other);
CheckPointer();
return *this;
}
template <typename U>
SameThreadCheckedMember& operator=(const SameThreadCheckedMember<U>& other) {
Parent::operator=(other);
CheckPointer();
return *this;
}
template <typename U>
SameThreadCheckedMember& operator=(const WeakMember<U>& other) {
Parent::operator=(other);
CheckPointer();
return *this;
}
template <typename U>
SameThreadCheckedMember& operator=(U* other) {
Parent::operator=(other);
CheckPointer();
return *this;
}
SameThreadCheckedMember& operator=(std::nullptr_t) {
Parent::operator=(nullptr);
return *this;
}
private:
void CheckPointer() { pointer_verifier_.CheckPointer(this->GetRaw()); }
void SaveCreationThreadState() {
pointer_verifier_.SaveCreationThreadState(this->GetRaw());
}
MemberPointerVerifier<T, TracenessMemberConfiguration::kTraced>
pointer_verifier_;
};
// WeakMember is similar to Member in that it is used to point to other oilpan
// heap allocated objects.
// However instead of creating a strong pointer to the object, the WeakMember
......@@ -560,12 +467,6 @@ struct DefaultHash<blink::UntracedMember<T>> {
using Hash = MemberHash<T>;
};
template <typename T>
struct DefaultHash<blink::SameThreadCheckedMember<T>> {
STATIC_ONLY(DefaultHash);
using Hash = MemberHash<T>;
};
template <typename T>
struct IsTraceable<blink::Member<T>> {
STATIC_ONLY(IsTraceable);
......@@ -584,12 +485,6 @@ struct IsTraceable<blink::WeakMember<T>> {
static const bool value = true;
};
template <typename T>
struct IsTraceable<blink::SameThreadCheckedMember<T>> {
STATIC_ONLY(IsTraceable);
static const bool value = true;
};
template <typename T, typename Traits, typename Allocator>
class ConstructTraits<blink::Member<T>, Traits, Allocator> {
STATIC_ONLY(ConstructTraits);
......
......@@ -16,9 +16,6 @@
namespace blink {
template <typename T>
class SameThreadCheckedMember;
// ThreadAffinity indicates which threads objects can be used on. We
// distinguish between objects that can be used on the main thread
// only and objects that can be used on any thread.
......@@ -83,12 +80,6 @@ struct ThreadingTrait<Member<T>> {
static const ThreadAffinity kAffinity = ThreadingTrait<T>::kAffinity;
};
template <typename T>
struct ThreadingTrait<SameThreadCheckedMember<T>> {
STATIC_ONLY(ThreadingTrait);
static const ThreadAffinity kAffinity = ThreadingTrait<T>::Affinity;
};
template <typename T>
struct ThreadingTrait<WeakMember<T>> {
STATIC_ONLY(ThreadingTrait);
......
......@@ -57,8 +57,6 @@ struct TraceTrait;
class ThreadState;
class Visitor;
template <typename T>
class SameThreadCheckedMember;
template <typename T>
class TraceWrapperV8Reference;
// The TraceMethodDelegate is used to convert a trace method for type T to a
......@@ -107,11 +105,6 @@ class PLATFORM_EXPORT Visitor {
Trace(t.GetSafe());
}
template <typename T>
void Trace(const SameThreadCheckedMember<T>& t) {
Trace(static_cast<const Member<T>&>(t));
}
// Fallback methods used only when we need to trace raw pointers of T. This is
// the case when a member is a union where we do not support members.
template <typename T>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment