[Cocoa] Retire DispatchPtr, and add more move semantics and simpler #ifs to other...
authordarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 6 Jun 2018 00:18:27 +0000 (00:18 +0000)
committerdarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 6 Jun 2018 00:18:27 +0000 (00:18 +0000)
https://bugs.webkit.org/show_bug.cgi?id=186324

Reviewed by Anders Carlsson.

Source/WebCore:

* platform/FileMonitor.h: Use OSObjectPtr instead of DispatchPtr.
* platform/cocoa/FileMonitorCocoa.mm:
(WebCore::FileMonitor::FileMonitor): Ditto.

Source/WebKit:

* 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.

Source/WTF:

* 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.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@232528 268f45cc-cd09-0410-ab3c-d52691b4dbfc

14 files changed:
Source/WTF/ChangeLog
Source/WTF/WTF.xcodeproj/project.pbxproj
Source/WTF/wtf/BlockPtr.h
Source/WTF/wtf/CMakeLists.txt
Source/WTF/wtf/DispatchPtr.h [deleted file]
Source/WTF/wtf/OSObjectPtr.h
Source/WebCore/ChangeLog
Source/WebCore/platform/FileMonitor.h
Source/WebCore/platform/cocoa/FileMonitorCocoa.mm
Source/WebKit/ChangeLog
Source/WebKit/NetworkProcess/cache/NetworkCacheData.h
Source/WebKit/NetworkProcess/cache/NetworkCacheDataCocoa.mm
Source/WebKit/NetworkProcess/cache/NetworkCacheIOChannel.h
Source/WebKit/NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm

index ea34cfa..05db424 100644 (file)
@@ -1,5 +1,20 @@
 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 Anders Carlsson.
+
+        * 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.
+
+2018-06-05  Darin Adler  <darin@apple.com>
+
         [Cocoa] More preparation for ARC, focusing on WebKit and smart pointers
         https://bugs.webkit.org/show_bug.cgi?id=186314
 
index 1043b8d..862c7cc 100644 (file)
                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>"; };
                                A561F30F1DF2642100FF675D /* DeprecatedOptional.h */,
                                A8A4727E151A825A004123FF /* Deque.h */,
                                A9A4727F151A825A004123FF /* DisallowCType.h */,
-                               A8A4727F151A825A004123FF /* DispatchPtr.h */,
                                0F4570421BE5B58F0062A629 /* Dominators.h */,
                                A8A47280151A825A004123FF /* DoublyLinkedList.h */,
                                A8A47297151A825A004123FF /* dtoa.cpp */,
                                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 */,
index 1258fdd..ac3e12c 100644 (file)
@@ -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);
index 9faec01..6ce617a 100644 (file)
@@ -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 (file)
index 598e5f3..0000000
+++ /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;
index 21a8fe9..ffe88cb 100644 (file)
 #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
index 80538dd..55d06b8 100644 (file)
@@ -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 Anders Carlsson.
+
+        * platform/FileMonitor.h: Use OSObjectPtr instead of DispatchPtr.
+        * platform/cocoa/FileMonitorCocoa.mm:
+        (WebCore::FileMonitor::FileMonitor): Ditto.
+
 2018-06-05  Ryan Haddad  <ryanhaddad@apple.com>
 
         Unreviewed, fix the macOS build with recent SDKs.
index f9412e5..e60f771 100644 (file)
@@ -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*);
index 4c0f074..d37e17f 100644 (file)
@@ -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());
 
index 7d961e3..fb34a28 100644 (file)
@@ -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 Anders Carlsson.
+
+        * 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  Brent Fulgham  <bfulgham@apple.com>
 
         Adjust compile and runtime flags to match shippable state of features
index ecf6d98..496108d 100644 (file)
@@ -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;
@@ -107,6 +106,5 @@ std::optional<Salt> readOrMakeSalt(const String& path);
 SHA1::Digest computeSHA1(const Data&, const Salt&);
 
 }
-}
 
-#endif
+}
index 1f3b4b9..c81f858 100644 (file)
@@ -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
index b137fe9..b47d13d 100644 (file)
@@ -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;
index b062667..b641a06 100644 (file)
@@ -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;