WebKit Bugzilla
Attachment 341996 Details for
Bug 186324
: [Cocoa] Retire DispatchPtr, and add more move semantics and simpler #ifs to other smart pointers
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-186324-20180605144258.patch (text/plain), 23.25 KB, created by
Darin Adler
on 2018-06-05 14:42:59 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Darin Adler
Created:
2018-06-05 14:42:59 PDT
Size:
23.25 KB
patch
obsolete
>Subversion Revision: 232520 >diff --git a/Source/WTF/ChangeLog b/Source/WTF/ChangeLog >index ea34cfa2c4f1b50fa86ce3a414789487049900aa..8ced55767f01f75883c4fecae4a3b12e2082b7bb 100644 >--- a/Source/WTF/ChangeLog >+++ b/Source/WTF/ChangeLog >@@ -1,3 +1,19 @@ >+2018-06-05 Darin Adler <darin@apple.com> >+ >+ [Cocoa] Retire DispatchPtr, and add more move semantics and simpler #ifs to other smart pointers >+ https://bugs.webkit.org/show_bug.cgi?id=186324 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * WTF.xcodeproj/project.pbxproj: Removed DispatchPtr.h. >+ * wtf/BlockPtr.h: Remove unneeded checks for __OBJC__. Added some use >+ of WTFMove. >+ * wtf/CMakeLists.txt: Removed DispatchPtr.h. >+ * wtf/DispatchPtr.h: Removed. We no longer need to support Mavericks. >+ * wtf/OSObjectPtr.h: Remove unneeded checks for __OBJC__. Added some use >+ of WTFMove. >+ * wtf/RetainPtr.h: Remove unneeded checks for __OBJC__. >+ > 2018-06-05 Darin Adler <darin@apple.com> > > [Cocoa] More preparation for ARC, focusing on WebKit and smart pointers >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index c646d1378533d4d0a54030b3fa02a7664ad610e6..4440c2935f6cbf15d04ad1ecf27231ddeffac139 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,14 @@ >+2018-06-05 Darin Adler <darin@apple.com> >+ >+ [Cocoa] Retire DispatchPtr, and add more move semantics and simpler #ifs to other smart pointers >+ https://bugs.webkit.org/show_bug.cgi?id=186324 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * platform/FileMonitor.h: Use OSObjectPtr instead of DispatchPtr. >+ * platform/cocoa/FileMonitorCocoa.mm: >+ (WebCore::FileMonitor::FileMonitor): Ditto. >+ > 2018-06-05 Darin Adler <darin@apple.com> > > [Cocoa] Improve some soft linking compatibility with ARC >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index ca0aeef91ae971cd08ef2855fa0f5a8428737a21..5586e980303ab9ff75c5b2d317c1aa7e8f1bd76c 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,26 @@ >+2018-06-05 Darin Adler <darin@apple.com> >+ >+ [Cocoa] Retire DispatchPtr, and add more move semantics and simpler #ifs to other smart pointers >+ https://bugs.webkit.org/show_bug.cgi?id=186324 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * NetworkProcess/cache/NetworkCacheData.h: Use OSObjectPtr instead of >+ DispatchPtr and also use an rvalue reference in the constructor. >+ * NetworkProcess/cache/NetworkCacheDataCocoa.mm: >+ (WebKit::NetworkCache::Data::Data): Use adoptOSObject, rvalue reference >+ and WTFMove. >+ (WebKit::NetworkCache::Data::empty): Use OSObjectPtr. >+ (WebKit::NetworkCache::Data::data const): Use adoptOSObject. >+ (WebKit::NetworkCache::Data::subrange const): Ditto. >+ (WebKit::NetworkCache::concatenate): Ditto. >+ (WebKit::NetworkCache::Data::adoptMap): Ditto. Also use WTFMove. >+ >+ * NetworkProcess/cache/NetworkCacheIOChannel.h: Use OSObjectPtr. >+ * NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm: >+ (WebKit::NetworkCache::IOChannel::IOChannel): Use adoptOSObject. >+ (WebKit::NetworkCache::IOChannel::read): Use OSObjectPtr. >+ > 2018-06-05 Darin Adler <darin@apple.com> > > [Cocoa] More preparation for ARC, focusing on WebKit and smart pointers >diff --git a/Source/WTF/WTF.xcodeproj/project.pbxproj b/Source/WTF/WTF.xcodeproj/project.pbxproj >index 1043b8d622379cfb9e37ed7842782dbd4d0645a0..862c7ccbc2f08e0c6ee8ee20728156eddef7d3ff 100644 >--- a/Source/WTF/WTF.xcodeproj/project.pbxproj >+++ b/Source/WTF/WTF.xcodeproj/project.pbxproj >@@ -453,7 +453,6 @@ > A8A4727B151A825A004123FF /* DecimalNumber.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DecimalNumber.cpp; sourceTree = "<group>"; }; > A8A4727C151A825A004123FF /* DecimalNumber.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DecimalNumber.h; sourceTree = "<group>"; }; > A8A4727E151A825A004123FF /* Deque.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Deque.h; sourceTree = "<group>"; }; >- A8A4727F151A825A004123FF /* DispatchPtr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DispatchPtr.h; sourceTree = "<group>"; }; > A8A47280151A825A004123FF /* DoublyLinkedList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DoublyLinkedList.h; sourceTree = "<group>"; }; > A8A47282151A825A004123FF /* bignum-dtoa.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = "bignum-dtoa.cc"; sourceTree = "<group>"; }; > A8A47283151A825A004123FF /* bignum-dtoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "bignum-dtoa.h"; sourceTree = "<group>"; }; >@@ -865,7 +864,6 @@ > A561F30F1DF2642100FF675D /* DeprecatedOptional.h */, > A8A4727E151A825A004123FF /* Deque.h */, > A9A4727F151A825A004123FF /* DisallowCType.h */, >- A8A4727F151A825A004123FF /* DispatchPtr.h */, > 0F4570421BE5B58F0062A629 /* Dominators.h */, > A8A47280151A825A004123FF /* DoublyLinkedList.h */, > A8A47297151A825A004123FF /* dtoa.cpp */, >@@ -1219,8 +1217,8 @@ > A8A4732C151A825B004123FF /* TextPosition.h */, > A3E4DD911F3A803400DED0B4 /* TextStream.cpp */, > A3E4DD921F3A803400DED0B4 /* TextStream.h */, >- FEF295BF20B49DCB00CF283A /* UTF8ConversionError.h */, > 70ECA60C1B02426800449739 /* UniquedStringImpl.h */, >+ FEF295BF20B49DCB00CF283A /* UTF8ConversionError.h */, > A3AB6E6A1F3E1AD6009C14B1 /* ValueToString.h */, > A8A4732D151A825B004123FF /* WTFString.cpp */, > A8A4732E151A825B004123FF /* WTFString.h */, >diff --git a/Source/WTF/wtf/BlockPtr.h b/Source/WTF/wtf/BlockPtr.h >index 1258fdd639904fc7491810ccaca9fc16dba3202a..ac3e12c36b7c2fce16918c461e2a835b34b33bef 100644 >--- a/Source/WTF/wtf/BlockPtr.h >+++ b/Source/WTF/wtf/BlockPtr.h >@@ -1,5 +1,5 @@ > /* >- * Copyright (C) 2016 Apple Inc. All rights reserved. >+ * Copyright (C) 2016-2018 Apple Inc. All rights reserved. > * > * Redistribution and use in source and binary forms, with or without > * modification, are permitted provided that the following conditions >@@ -97,14 +97,13 @@ public: > > new (&block->f) F { std::move(function) }; > >-#if defined(__OBJC__) && __has_feature(objc_arc) >- BlockPtr blockPtr { (__bridge_transfer BlockType)block }; >+#if __has_feature(objc_arc) >+ return BlockPtr { (__bridge_transfer BlockType)block }; > #else > BlockPtr blockPtr; > blockPtr.m_block = reinterpret_cast<BlockType>(block); >-#endif >- > return blockPtr; >+#endif > } > > BlockPtr() >@@ -113,8 +112,8 @@ public: > } > > BlockPtr(BlockType block) >-#if defined(__OBJC__) && __has_feature(objc_arc) >- : m_block(block) >+#if __has_feature(objc_arc) >+ : m_block(WTFMove(block)) > #else > : m_block(Block_copy(block)) > #endif >@@ -122,7 +121,7 @@ public: > } > > BlockPtr(const BlockPtr& other) >-#if defined(__OBJC__) && __has_feature(objc_arc) >+#if __has_feature(objc_arc) > : m_block(other.m_block) > #else > : m_block(Block_copy(other.m_block)) >@@ -137,14 +136,14 @@ public: > > ~BlockPtr() > { >-#if !defined(__OBJC__) || !__has_feature(objc_arc) >+#if !__has_feature(objc_arc) > Block_release(m_block); > #endif > } > > BlockPtr& operator=(const BlockPtr& other) > { >-#if defined(__OBJC__) && __has_feature(objc_arc) >+#if __has_feature(objc_arc) > m_block = other.m_block; > #else > if (this != &other) { >@@ -160,7 +159,7 @@ public: > { > ASSERT(this != &other); > >-#if !defined(__OBJC__) || !__has_feature(objc_arc) >+#if !__has_feature(objc_arc) > Block_release(m_block); > #endif > m_block = std::exchange(other.m_block, nullptr); >diff --git a/Source/WTF/wtf/CMakeLists.txt b/Source/WTF/wtf/CMakeLists.txt >index 9faec016784bd93a635e09d4c9c7632e032d6a08..6ce617a7b4dca4048b57a26286361d4577333b3a 100644 >--- a/Source/WTF/wtf/CMakeLists.txt >+++ b/Source/WTF/wtf/CMakeLists.txt >@@ -50,7 +50,6 @@ set(WTF_PUBLIC_HEADERS > DeprecatedOptional.h > Deque.h > DisallowCType.h >- DispatchPtr.h > Dominators.h > DoublyLinkedList.h > DumbPtrTraits.h >diff --git a/Source/WTF/wtf/DispatchPtr.h b/Source/WTF/wtf/DispatchPtr.h >deleted file mode 100644 >index 598e5f3e8202c1938b8f08f545202270b72c3d14..0000000000000000000000000000000000000000 >--- a/Source/WTF/wtf/DispatchPtr.h >+++ /dev/null >@@ -1,115 +0,0 @@ >-/* >- * Copyright (C) 2015-2018 Apple Inc. All rights reserved. >- * >- * Redistribution and use in source and binary forms, with or without >- * modification, are permitted provided that the following conditions >- * are met: >- * 1. Redistributions of source code must retain the above copyright >- * notice, this list of conditions and the following disclaimer. >- * 2. Redistributions in binary form must reproduce the above copyright >- * notice, this list of conditions and the following disclaimer in the >- * documentation and/or other materials provided with the distribution. >- * >- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' >- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, >- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR >- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS >- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR >- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF >- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS >- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN >- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) >- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF >- * THE POSSIBILITY OF SUCH DAMAGE. >- */ >- >-#pragma once >- >-#include <wtf/Assertions.h> >-#include <wtf/StdLibExtras.h> >- >-namespace WTF { >- >-// FIXME: Use OSObjectPtr instead in the three places this is used and then >-// delete this. When this class template was originally created os_retain >-// did not yet work with dispatch_data_t, but it now does on versions of >-// Cocoa platforms that WebKit supports and WebKit already uses OSObjectPtr >-// for dispatch_data_t in multiple places. >- >-template<typename T> class DispatchPtr; >-template<typename T> DispatchPtr<T> adoptDispatch(T dispatchObject); >- >-template<typename T> class DispatchPtr { >-public: >- DispatchPtr() >- : m_ptr(nullptr) >- { >- } >- explicit DispatchPtr(T ptr) >- : m_ptr(ptr) >- { >-#if !defined(__OBJC__) || !__has_feature(objc_arc) >- if (m_ptr) >- dispatch_retain(m_ptr); >-#endif >- } >- DispatchPtr(const DispatchPtr& other) >- : m_ptr(other.m_ptr) >- { >-#if !defined(__OBJC__) || !__has_feature(objc_arc) >- if (m_ptr) >- dispatch_retain(m_ptr); >- >-#endif >- } >- ~DispatchPtr() >- { >-#if !defined(__OBJC__) || !__has_feature(objc_arc) >- if (m_ptr) >- dispatch_release(m_ptr); >-#endif >- } >- >- DispatchPtr& operator=(const DispatchPtr& other) >- { >- auto copy = other; >- std::swap(m_ptr, copy.m_ptr); >- return *this; >- } >- >- DispatchPtr& operator=(std::nullptr_t) >- { >-#if defined(__OBJC__) && __has_feature(objc_arc) >- m_ptr = nullptr; >-#else >- auto ptr = std::exchange(m_ptr, nullptr); >- if (LIKELY(ptr != nullptr)) >- dispatch_release(ptr); >-#endif >- return *this; >- } >- >- T get() const { return m_ptr; } >- explicit operator bool() const { return m_ptr; } >- >- friend DispatchPtr adoptDispatch<T>(T); >- >-private: >- struct Adopt { }; >- DispatchPtr(Adopt, T data) >- : m_ptr(data) >- { >- } >- >- T m_ptr; >-}; >- >-template <typename T> DispatchPtr<T> adoptDispatch(T dispatchObject) >-{ >- return DispatchPtr<T>(typename DispatchPtr<T>::Adopt { }, dispatchObject); >-} >- >-} // namespace WTF >- >-using WTF::DispatchPtr; >-using WTF::adoptDispatch; >diff --git a/Source/WTF/wtf/OSObjectPtr.h b/Source/WTF/wtf/OSObjectPtr.h >index 21a8fe954c401cac8c230c658ceee68a0c2a2291..ffe88cb722a6948340a2ef0db40a4f521df784c8 100644 >--- a/Source/WTF/wtf/OSObjectPtr.h >+++ b/Source/WTF/wtf/OSObjectPtr.h >@@ -26,28 +26,25 @@ > #pragma once > > #include <os/object.h> >-#include <wtf/Assertions.h> > #include <wtf/StdLibExtras.h> > > namespace WTF { > >-template<typename T> class OSObjectPtr; >+template<typename> class OSObjectPtr; > template<typename T> OSObjectPtr<T> adoptOSObject(T); > >-template<typename T> >-static inline void retainOSObject(T ptr) >+template<typename T> static inline void retainOSObject(T ptr) > { >-#if defined(__OBJC__) && __has_feature(objc_arc) >+#if __has_feature(objc_arc) > UNUSED_PARAM(ptr); > #else > os_retain(ptr); > #endif > } > >-template<typename T> >-static inline void releaseOSObject(T ptr) >+template<typename T> static inline void releaseOSObject(T ptr) > { >-#if defined(__OBJC__) && __has_feature(objc_arc) >+#if __has_feature(objc_arc) > UNUSED_PARAM(ptr); > #else > os_release(ptr); >@@ -80,13 +77,13 @@ public: > } > > OSObjectPtr(OSObjectPtr&& other) >- : m_ptr(other.m_ptr) >+ : m_ptr(WTFMove(other.m_ptr)) > { > other.m_ptr = nullptr; > } > > OSObjectPtr(T ptr) >- : m_ptr(ptr) >+ : m_ptr(WTFMove(ptr)) > { > if (m_ptr) > retainOSObject(m_ptr); >@@ -111,13 +108,12 @@ public: > if (m_ptr) > releaseOSObject(m_ptr); > m_ptr = nullptr; >- > return *this; > } > > OSObjectPtr& operator=(T other) > { >- OSObjectPtr ptr = other; >+ OSObjectPtr ptr = WTFMove(other); > swap(ptr); > return *this; > } >@@ -137,7 +133,7 @@ public: > private: > struct AdoptOSObject { }; > OSObjectPtr(AdoptOSObject, T ptr) >- : m_ptr(ptr) >+ : m_ptr(WTFMove(ptr)) > { > } > >@@ -146,7 +142,7 @@ private: > > template<typename T> inline OSObjectPtr<T> adoptOSObject(T ptr) > { >- return OSObjectPtr<T>(typename OSObjectPtr<T>::AdoptOSObject { }, ptr); >+ return OSObjectPtr<T> { typename OSObjectPtr<T>::AdoptOSObject { }, WTFMove(ptr) }; > } > > } // namespace WTF >diff --git a/Source/WTF/wtf/RetainPtr.h b/Source/WTF/wtf/RetainPtr.h >index 545ec398ac0ad28e152a3f917ce21a3913022d2f..44f5f2a1b999011601ec381cafb245295597cf12 100644 >--- a/Source/WTF/wtf/RetainPtr.h >+++ b/Source/WTF/wtf/RetainPtr.h >@@ -115,7 +115,7 @@ private: > > static PtrType hashTableDeletedValue() { return reinterpret_cast<PtrType>(-1); } > >-#if defined (__OBJC__) && __has_feature(objc_arc) >+#if __has_feature(objc_arc) > template<typename U> > typename std::enable_if<std::is_convertible<U, id>::value, PtrType>::type > fromStorageTypeHelper(StorageType ptr) const >diff --git a/Source/WebCore/platform/FileMonitor.h b/Source/WebCore/platform/FileMonitor.h >index f9412e532d795a7b45897958e0e946693a750b58..e60f7713f62bb2562a842888c7fc629f2c547f33 100644 >--- a/Source/WebCore/platform/FileMonitor.h >+++ b/Source/WebCore/platform/FileMonitor.h >@@ -31,7 +31,7 @@ > > #if USE(COCOA_EVENT_LOOP) > #include <dispatch/dispatch.h> >-#include <wtf/DispatchPtr.h> >+#include <wtf/OSObjectPtr.h> > #endif > > #if USE(GLIB) >@@ -43,17 +43,14 @@ namespace WebCore { > > class FileMonitor { > public: >- enum class FileChangeType { >- Modification, >- Removal >- }; >+ enum class FileChangeType { Modification, Removal }; > > WEBCORE_EXPORT FileMonitor(const String&, Ref<WorkQueue>&& handlerQueue, WTF::Function<void(FileChangeType)>&& modificationHandler); > WEBCORE_EXPORT ~FileMonitor(); > > private: > #if USE(COCOA_EVENT_LOOP) >- DispatchPtr<dispatch_source_t> m_platformMonitor; >+ OSObjectPtr<dispatch_source_t> m_platformMonitor; > #endif > #if USE(GLIB) > static void fileChangedCallback(GFileMonitor*, GFile*, GFile*, GFileMonitorEvent, FileMonitor*); >diff --git a/Source/WebCore/platform/cocoa/FileMonitorCocoa.mm b/Source/WebCore/platform/cocoa/FileMonitorCocoa.mm >index 4c0f074e0d1753be6fe8c6027e55a23396adb4a4..d37e17f7317694d2ca50b10b2e5c0a3c70a7da2e 100644 >--- a/Source/WebCore/platform/cocoa/FileMonitorCocoa.mm >+++ b/Source/WebCore/platform/cocoa/FileMonitorCocoa.mm >@@ -50,7 +50,7 @@ FileMonitor::FileMonitor(const String& path, Ref<WorkQueue>&& handlerQueue, WTF: > } > > // The source (platformMonitor) retains the dispatch queue. >- m_platformMonitor = adoptDispatch(dispatch_source_create(DISPATCH_SOURCE_TYPE_VNODE, handle, monitorMask, handlerQueue->dispatchQueue())); >+ m_platformMonitor = adoptOSObject(dispatch_source_create(DISPATCH_SOURCE_TYPE_VNODE, handle, monitorMask, handlerQueue->dispatchQueue())); > > LOG(ResourceLoadStatistics, "Creating monitor %p", m_platformMonitor.get()); > >diff --git a/Source/WebKit/NetworkProcess/cache/NetworkCacheData.h b/Source/WebKit/NetworkProcess/cache/NetworkCacheData.h >index ecf6d98af69fe0719dc65b88367ca4df78b87a53..496108de63eb44de9f7ba58684efe2491da689bf 100644 >--- a/Source/WebKit/NetworkProcess/cache/NetworkCacheData.h >+++ b/Source/WebKit/NetworkProcess/cache/NetworkCacheData.h >@@ -23,8 +23,7 @@ > * THE POSSIBILITY OF SUCH DAMAGE. > */ > >-#ifndef NetworkCacheData_h >-#define NetworkCacheData_h >+#pragma once > > #include <wtf/FunctionDispatcher.h> > #include <wtf/SHA1.h> >@@ -32,7 +31,7 @@ > #include <wtf/text/WTFString.h> > > #if PLATFORM(COCOA) >-#include <wtf/DispatchPtr.h> >+#include <wtf/OSObjectPtr.h> > #endif > > #if USE(SOUP) >@@ -57,7 +56,7 @@ public: > > #if PLATFORM(COCOA) > enum class Backing { Buffer, Map }; >- Data(DispatchPtr<dispatch_data_t>, Backing = Backing::Buffer); >+ Data(OSObjectPtr<dispatch_data_t>&&, Backing = Backing::Buffer); > #endif > #if USE(SOUP) > Data(GRefPtr<SoupBuffer>&&, int fd = -1); >@@ -85,7 +84,7 @@ public: > #endif > private: > #if PLATFORM(COCOA) >- mutable DispatchPtr<dispatch_data_t> m_dispatchData; >+ mutable OSObjectPtr<dispatch_data_t> m_dispatchData; > #endif > #if USE(SOUP) > mutable GRefPtr<SoupBuffer> m_buffer; >@@ -106,7 +105,6 @@ using Salt = std::array<uint8_t, 8>; > std::optional<Salt> readOrMakeSalt(const String& path); > SHA1::Digest computeSHA1(const Data&, const Salt&); > >-} > } > >-#endif >+} >diff --git a/Source/WebKit/NetworkProcess/cache/NetworkCacheDataCocoa.mm b/Source/WebKit/NetworkProcess/cache/NetworkCacheDataCocoa.mm >index 1f3b4b96bad128b3b4d786c674199fa45e2e4426..c81f858aa0a235e8d68985d1e79f791ef3118899 100644 >--- a/Source/WebKit/NetworkProcess/cache/NetworkCacheDataCocoa.mm >+++ b/Source/WebKit/NetworkProcess/cache/NetworkCacheDataCocoa.mm >@@ -35,13 +35,13 @@ namespace WebKit { > namespace NetworkCache { > > Data::Data(const uint8_t* data, size_t size) >- : m_dispatchData(adoptDispatch(dispatch_data_create(data, size, nullptr, DISPATCH_DATA_DESTRUCTOR_DEFAULT))) >+ : m_dispatchData(adoptOSObject(dispatch_data_create(data, size, nullptr, DISPATCH_DATA_DESTRUCTOR_DEFAULT))) > , m_size(size) > { > } > >-Data::Data(DispatchPtr<dispatch_data_t> dispatchData, Backing backing) >- : m_dispatchData(dispatchData) >+Data::Data(OSObjectPtr<dispatch_data_t>&& dispatchData, Backing backing) >+ : m_dispatchData(WTFMove(dispatchData)) > , m_size(m_dispatchData ? dispatch_data_get_size(m_dispatchData.get()) : 0) > , m_isMap(m_size && backing == Backing::Map) > { >@@ -49,7 +49,7 @@ Data::Data(DispatchPtr<dispatch_data_t> dispatchData, Backing backing) > > Data Data::empty() > { >- return { DispatchPtr<dispatch_data_t>(dispatch_data_empty) }; >+ return { OSObjectPtr<dispatch_data_t> { dispatch_data_empty } }; > } > > const uint8_t* Data::data() const >@@ -57,7 +57,7 @@ const uint8_t* Data::data() const > if (!m_data && m_dispatchData) { > const void* data; > size_t size; >- m_dispatchData = adoptDispatch(dispatch_data_create_map(m_dispatchData.get(), &data, &size)); >+ m_dispatchData = adoptOSObject(dispatch_data_create_map(m_dispatchData.get(), &data, &size)); > ASSERT(size == m_size); > m_data = static_cast<const uint8_t*>(data); > } >@@ -80,7 +80,7 @@ bool Data::apply(const Function<bool (const uint8_t*, size_t)>& applier) const > > Data Data::subrange(size_t offset, size_t size) const > { >- return { adoptDispatch(dispatch_data_create_subrange(dispatchData(), offset, size)) }; >+ return { adoptOSObject(dispatch_data_create_subrange(dispatchData(), offset, size)) }; > } > > Data concatenate(const Data& a, const Data& b) >@@ -89,17 +89,18 @@ Data concatenate(const Data& a, const Data& b) > return b; > if (b.isNull()) > return a; >- return { adoptDispatch(dispatch_data_create_concat(a.dispatchData(), b.dispatchData())) }; >+ return { adoptOSObject(dispatch_data_create_concat(a.dispatchData(), b.dispatchData())) }; > } > > Data Data::adoptMap(void* map, size_t size, int fd) > { >- ASSERT(map && map != MAP_FAILED); >+ ASSERT(map); >+ ASSERT(map != MAP_FAILED); > close(fd); >- auto bodyMap = adoptDispatch(dispatch_data_create(map, size, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), [map, size] { >+ auto bodyMap = adoptOSObject(dispatch_data_create(map, size, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), [map, size] { > munmap(map, size); > })); >- return { bodyMap, Data::Backing::Map }; >+ return { WTFMove(bodyMap), Data::Backing::Map }; > } > > RefPtr<SharedMemory> Data::tryCreateSharedMemory() const >diff --git a/Source/WebKit/NetworkProcess/cache/NetworkCacheIOChannel.h b/Source/WebKit/NetworkProcess/cache/NetworkCacheIOChannel.h >index b137fe982fc91c59a7480e4ddfe6b4169d775bbb..b47d13d5f7d6c808e0a304bad60a25aa5d657cb1 100644 >--- a/Source/WebKit/NetworkProcess/cache/NetworkCacheIOChannel.h >+++ b/Source/WebKit/NetworkProcess/cache/NetworkCacheIOChannel.h >@@ -69,7 +69,7 @@ private: > int m_fileDescriptor { 0 }; > std::atomic<bool> m_wasDeleted { false }; // Try to narrow down a crash, https://bugs.webkit.org/show_bug.cgi?id=165659 > #if PLATFORM(COCOA) >- DispatchPtr<dispatch_io_t> m_dispatchIO; >+ OSObjectPtr<dispatch_io_t> m_dispatchIO; > #endif > #if USE(SOUP) > GRefPtr<GInputStream> m_inputStream; >diff --git a/Source/WebKit/NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm b/Source/WebKit/NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm >index b062667ea2903187b260ee256f6294063786aed0..b641a0642dd24422df5a94db17a33579e4617ee8 100644 >--- a/Source/WebKit/NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm >+++ b/Source/WebKit/NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm >@@ -67,7 +67,7 @@ IOChannel::IOChannel(const String& filePath, Type type) > int fd = ::open(path.data(), oflag, mode); > m_fileDescriptor = fd; > >- m_dispatchIO = adoptDispatch(dispatch_io_create(DISPATCH_IO_RANDOM, fd, dispatch_get_global_queue(useLowIOPriority ? DISPATCH_QUEUE_PRIORITY_BACKGROUND : DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), [fd](int) { >+ m_dispatchIO = adoptOSObject(dispatch_io_create(DISPATCH_IO_RANDOM, fd, dispatch_get_global_queue(useLowIOPriority ? DISPATCH_QUEUE_PRIORITY_BACKGROUND : DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), [fd](int) { > close(fd); > })); > ASSERT(m_dispatchIO.get()); >@@ -95,8 +95,7 @@ void IOChannel::read(size_t offset, size_t size, WorkQueue* queue, Function<void > ASSERT_UNUSED(done, done || !didCallCompletionHandler); > if (didCallCompletionHandler) > return; >- DispatchPtr<dispatch_data_t> fileDataPtr(fileData); >- Data data(fileDataPtr); >+ Data data { OSObjectPtr<dispatch_data_t> { fileData } }; > auto callback = WTFMove(completionHandler); > callback(data, error); > didCallCompletionHandler = true;
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
andersca
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 186324
: 341996