Title: [222977] trunk
- Revision
- 222977
- Author
- [email protected]
- Date
- 2017-10-06 06:08:58 -0700 (Fri, 06 Oct 2017)
Log Message
Minor WeakPtr improvements
https://bugs.webkit.org/show_bug.cgi?id=177958
Reviewed by Sam Weinig.
Source/WTF:
* wtf/WeakPtr.h:
(WTF::WeakPtr::operator bool const):
Make explicit.
(WTF::WeakPtrFactory::createWeakPtr const):
(WTF::makeWeakPtr):
Remove templating from createWeakPtr, makeWeakPtr() is now the
canonical way to make derived-type WeakPtrs.
Tools:
* TestWebKitAPI/Tests/WTF/WeakPtr.cpp:
(TestWebKitAPI::TEST):
(TestWebKitAPI::Base::createWeakPtr): Deleted.
Modified Paths
Diff
Modified: trunk/Source/WTF/ChangeLog (222976 => 222977)
--- trunk/Source/WTF/ChangeLog 2017-10-06 13:05:57 UTC (rev 222976)
+++ trunk/Source/WTF/ChangeLog 2017-10-06 13:08:58 UTC (rev 222977)
@@ -1,3 +1,21 @@
+2017-10-06 Antti Koivisto <[email protected]>
+
+ Minor WeakPtr improvements
+ https://bugs.webkit.org/show_bug.cgi?id=177958
+
+ Reviewed by Sam Weinig.
+
+ * wtf/WeakPtr.h:
+ (WTF::WeakPtr::operator bool const):
+
+ Make explicit.
+
+ (WTF::WeakPtrFactory::createWeakPtr const):
+ (WTF::makeWeakPtr):
+
+ Remove templating from createWeakPtr, makeWeakPtr() is now the
+ canonical way to make derived-type WeakPtrs.
+
2017-10-04 Filip Pizlo <[email protected]>
bmalloc mutex should be adaptive
Modified: trunk/Source/WTF/wtf/WeakPtr.h (222976 => 222977)
--- trunk/Source/WTF/wtf/WeakPtr.h 2017-10-06 13:05:57 UTC (rev 222976)
+++ trunk/Source/WTF/wtf/WeakPtr.h 2017-10-06 13:08:58 UTC (rev 222977)
@@ -61,9 +61,6 @@
T* m_ptr;
};
-template<typename T, typename U> WeakReference<T>* weak_reference_upcast(WeakReference<U>*);
-template<typename T, typename U> WeakReference<T>* weak_reference_downcast(WeakReference<U>*);
-
template<typename T>
class WeakPtr {
WTF_MAKE_FAST_ALLOCATED;
@@ -75,7 +72,7 @@
template<typename U> WeakPtr(WeakPtr<U>&&);
T* get() const { return m_ref ? m_ref->get() : nullptr; }
- operator bool() const { return m_ref && m_ref->get(); }
+ explicit operator bool() const { return m_ref && m_ref->get(); }
WeakPtr& operator=(std::nullptr_t) { m_ref = nullptr; return *this; }
template<typename U> WeakPtr& operator=(const WeakPtr<U>&);
@@ -88,6 +85,7 @@
private:
template<typename U> friend class WeakPtr;
+ template<typename U> friend WeakPtr<U> makeWeakPtr(U&);
RefPtr<WeakReference<T>> m_ref;
};
@@ -105,12 +103,11 @@
m_ref->clear();
}
- template<typename U = T>
- WeakPtr<U> createWeakPtr(T& ptr) const
+ WeakPtr<T> createWeakPtr(T& ptr) const
{
if (!m_ref)
m_ref = WeakReference<T>::create(&ptr);
- return { makeRef(*weak_reference_downcast<U>(m_ref.get())) };
+ return { makeRef(*m_ref) };
}
void revokeAll()
@@ -162,7 +159,7 @@
template<typename T> inline WeakPtr<T> makeWeakPtr(T& ref)
{
- return ref.weakPtrFactory().template createWeakPtr<T>(ref);
+ return { adoptRef(*weak_reference_downcast<T>(ref.weakPtrFactory().createWeakPtr(ref).m_ref.leakRef())) };
}
template<typename T> inline WeakPtr<T> makeWeakPtr(T* ptr)
Modified: trunk/Tools/ChangeLog (222976 => 222977)
--- trunk/Tools/ChangeLog 2017-10-06 13:05:57 UTC (rev 222976)
+++ trunk/Tools/ChangeLog 2017-10-06 13:08:58 UTC (rev 222977)
@@ -1,3 +1,14 @@
+2017-10-06 Antti Koivisto <[email protected]>
+
+ Minor WeakPtr improvements
+ https://bugs.webkit.org/show_bug.cgi?id=177958
+
+ Reviewed by Sam Weinig.
+
+ * TestWebKitAPI/Tests/WTF/WeakPtr.cpp:
+ (TestWebKitAPI::TEST):
+ (TestWebKitAPI::Base::createWeakPtr): Deleted.
+
2017-10-06 Carlos Garcia Campos <[email protected]>
Unreviewed. Fix parsing of GTK unit tests output in bot configuration.
Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp (222976 => 222977)
--- trunk/Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp 2017-10-06 13:05:57 UTC (rev 222976)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp 2017-10-06 13:08:58 UTC (rev 222977)
@@ -40,9 +40,9 @@
EXPECT_EQ(weakPtr1.get(), &dummy);
EXPECT_EQ(weakPtr2.get(), &dummy);
EXPECT_EQ(weakPtr3.get(), &dummy);
- EXPECT_TRUE(weakPtr1);
- EXPECT_TRUE(weakPtr2);
- EXPECT_TRUE(weakPtr3);
+ EXPECT_TRUE(!!weakPtr1);
+ EXPECT_TRUE(!!weakPtr2);
+ EXPECT_TRUE(!!weakPtr3);
EXPECT_TRUE(weakPtr1 == weakPtr2);
EXPECT_TRUE(weakPtr1 == &dummy);
EXPECT_TRUE(&dummy == weakPtr2);
@@ -206,12 +206,6 @@
return 0;
}
- template<typename T>
- WeakPtr<T> createWeakPtr()
- {
- return m_weakPtrFactory.createWeakPtr<T>(*this);
- }
-
auto& weakPtrFactory() { return m_weakPtrFactory; }
private:
@@ -239,12 +233,12 @@
Derived* derivedPtr = &object;
Base* basePtr = static_cast<Base*>(&object);
- baseWeakPtr = object.createWeakPtr<Base>();
+ baseWeakPtr = object.weakPtrFactory().createWeakPtr(object);
EXPECT_EQ(basePtr->foo(), dummy0);
EXPECT_EQ(baseWeakPtr->foo(), basePtr->foo());
EXPECT_EQ(baseWeakPtr.get()->foo(), basePtr->foo());
- derivedWeakPtr = object.createWeakPtr<Derived>();
+ derivedWeakPtr = makeWeakPtr(object);
EXPECT_EQ(derivedWeakPtr->foo(), dummy1);
EXPECT_EQ(derivedWeakPtr->foo(), derivedPtr->foo());
EXPECT_EQ(derivedWeakPtr.get()->foo(), derivedPtr->foo());
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes