Title: [283971] trunk
Revision
283971
Author
[email protected]
Date
2021-10-12 01:02:45 -0700 (Tue, 12 Oct 2021)

Log Message

Source/WebCore:
Remove ImplicitAddress
https://bugs.webkit.org/show_bug.cgi?id=230820
<rdar://problem/83826318>

Patch by Saam Barati <[email protected]> on 2021-10-11
Reviewed by Yusuke Suzuki.

* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateSelectorChecker):

Source/WebKit:
[GPU Process] Unique RenderingResourceIdentifiers Part 8: Consolidate DisplayList::ResourceHeap
https://bugs.webkit.org/show_bug.cgi?id=231411
<rdar://problem/84013167>

Reviewed by Simon Fraser.

* GPUProcess/graphics/RemoteRenderingBackend.cpp:
(WebKit::RemoteRenderingBackend::submit):
* GPUProcess/graphics/RemoteResourceCache.cpp:
(WebKit::RemoteResourceCache::RemoteResourceCache):
(WebKit::RemoteResourceCache::cacheImageBuffer):
(WebKit::RemoteResourceCache::cachedImageBuffer const):
(WebKit::RemoteResourceCache::cacheNativeImage):
(WebKit::RemoteResourceCache::cachedNativeImage const):
(WebKit::RemoteResourceCache::cacheFont):
(WebKit::RemoteResourceCache::cachedFont const):
(WebKit::RemoteResourceCache::deleteAllFonts):
(WebKit::RemoteResourceCache::maybeRemoveResource):
(WebKit::RemoteResourceCache::updateHasActiveDrawables):
* GPUProcess/graphics/RemoteResourceCache.h:
(WebKit::RemoteResourceCache::resourceHeap const):
(WebKit::RemoteResourceCache::imageBuffers const): Deleted.
(WebKit::RemoteResourceCache::nativeImages const): Deleted.
(WebKit::RemoteResourceCache::fonts const): Deleted.

Tools:
[GPU Process] Unique RenderingResourceIdentifiers Part 8: Consolidate DisplayList::ResourceHeap
https://bugs.webkit.org/show_bug.cgi?id=231411
<rdar://problem/84013167>

Reviewed by Simon Fraser.

* TestWebKitAPI/Tests/WebCore/cg/DisplayListTestsCG.cpp:
(TestWebKitAPI::TEST):

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (283970 => 283971)


--- trunk/Source/WebCore/ChangeLog	2021-10-12 06:32:55 UTC (rev 283970)
+++ trunk/Source/WebCore/ChangeLog	2021-10-12 08:02:45 UTC (rev 283971)
@@ -11,6 +11,72 @@
 
 2021-10-11  Myles C. Maxfield  <[email protected]>
 
+        [GPU Process] Unique RenderingResourceIdentifiers Part 8: Consolidate DisplayList::ResourceHeap
+        https://bugs.webkit.org/show_bug.cgi?id=231411
+        <rdar://problem/84013167>
+
+        Reviewed by Simon Fraser.
+
+        Display lists need to be replayed within a context, and that context includes a collection of resources
+        that the display list items might reference. For example, if there's a display list item that says to draw
+        an image, the image needs to be present in the collection.
+
+        We were representing this collection of resources as 3 independent HashMap<RenderingResourceIdentifier, T>s.
+        This is kind of unfortunate, because it means 3 objects are passed around in parallel as arguments to the
+        relevant places which need them. It's more elegant to wrap an object around these 3 HashMaps, to avoid
+        polluting functions' parameter lists.
+
+        Not only that, but the GPU process doesn't want the key to these HashMaps to be RenderingResourceIdentifiers.
+        Instead, the GPU process wants the key to be QualifiedRenderingResourceIdentifiers (see
+        https://bugs.webkit.org/show_bug.cgi?id=217638). Wrapping an object around these HashMaps allows a layer of
+        indirection, where the GPU process can implement the interface of this object, but internally represent the
+        HashMaps using different keys. WebCore shouldn't know about QualifiedRenderingResourceIdentifiers, so this
+        layer of indirection is necessary for that goal.
+
+        No new tests because there is no behavior change.
+
+        * Headers.cmake:
+        * WebCore.xcodeproj/project.pbxproj:
+        * platform/graphics/Font.h:
+        * platform/graphics/ImageBuffer.h:
+        * platform/graphics/NativeImage.h:
+        * platform/graphics/displaylists/DisplayList.cpp:
+        (WebCore::DisplayList::DisplayList::DisplayList):
+        (WebCore::DisplayList::DisplayList::operator=):
+        (WebCore::DisplayList::DisplayList::clear):
+        (WebCore::DisplayList::m_nativeImages): Deleted.
+        * platform/graphics/displaylists/DisplayList.h:
+        (WebCore::DisplayList::DisplayList::resourceHeap const):
+        (WebCore::DisplayList::DisplayList::cacheImageBuffer):
+        (WebCore::DisplayList::DisplayList::cacheNativeImage):
+        (WebCore::DisplayList::DisplayList::cacheFont):
+        (WebCore::DisplayList::DisplayList::imageBuffers const): Deleted.
+        (WebCore::DisplayList::DisplayList::nativeImages const): Deleted.
+        (WebCore::DisplayList::DisplayList::fonts const): Deleted.
+        * platform/graphics/displaylists/DisplayListReplayer.cpp:
+        (WebCore::DisplayList::Replayer::Replayer):
+        (WebCore::DisplayList::applyImageBufferItem):
+        (WebCore::DisplayList::applyNativeImageItem):
+        (WebCore::DisplayList::applySetStateItem):
+        (WebCore::DisplayList::applyFontItem):
+        (WebCore::DisplayList::Replayer::applyItem):
+        * platform/graphics/displaylists/DisplayListReplayer.h:
+        * platform/graphics/displaylists/DisplayListResourceHeap.h: Added.
+        (WebCore::DisplayList::ResourceHeap::add):
+        (WebCore::DisplayList::ResourceHeap::getImageBuffer const):
+        (WebCore::DisplayList::ResourceHeap::getNativeImage const):
+        (WebCore::DisplayList::ResourceHeap::getFont const):
+        (WebCore::DisplayList::ResourceHeap::hasImageBuffer const):
+        (WebCore::DisplayList::ResourceHeap::hasNativeImage const):
+        (WebCore::DisplayList::ResourceHeap::hasFont const):
+        (WebCore::DisplayList::ResourceHeap::removeImageBuffer):
+        (WebCore::DisplayList::ResourceHeap::removeNativeImage):
+        (WebCore::DisplayList::ResourceHeap::removeFont):
+        (WebCore::DisplayList::ResourceHeap::clear):
+        (WebCore::DisplayList::ResourceHeap::deleteAllFonts):
+
+2021-10-11  Myles C. Maxfield  <[email protected]>
+
         [GPU Process] Unique RenderingResourceIdentifiers Part 6: Uniquify more of RemoteDisplayListRecorder at entry points
         https://bugs.webkit.org/show_bug.cgi?id=231552
         <rdar://problem/84130587>

Modified: trunk/Source/WebCore/Headers.cmake (283970 => 283971)


--- trunk/Source/WebCore/Headers.cmake	2021-10-12 06:32:55 UTC (rev 283970)
+++ trunk/Source/WebCore/Headers.cmake	2021-10-12 08:02:45 UTC (rev 283971)
@@ -1404,6 +1404,7 @@
     platform/graphics/displaylists/DisplayListRecorder.h
     platform/graphics/displaylists/DisplayListRecorderImpl.h
     platform/graphics/displaylists/DisplayListReplayer.h
+    platform/graphics/displaylists/DisplayListResourceHeap.h
     platform/graphics/displaylists/InMemoryDisplayList.h
 
     platform/graphics/cv/ImageTransferSessionVT.h

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (283970 => 283971)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2021-10-12 06:32:55 UTC (rev 283970)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2021-10-12 08:02:45 UTC (rev 283971)
@@ -650,6 +650,7 @@
 		1CAF34820A6C405200ABE06E /* WebScriptObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1CAF347F0A6C405200ABE06E /* WebScriptObject.mm */; };
 		1CAF34830A6C405200ABE06E /* WebScriptObjectPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CAF34800A6C405200ABE06E /* WebScriptObjectPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		1CAF56DB25301AC80017B472 /* DrawGlyphsRecorder.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CAF56D8253014570017B472 /* DrawGlyphsRecorder.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		1CBF900F270FF8F6000C457D /* DisplayListResourceHeap.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CBF900D270FF8F6000C457D /* DisplayListResourceHeap.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		1CC54AFE270F96AE005BF8BE /* ProcessQualified.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CC54AFB270F92DA005BF8BE /* ProcessQualified.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		1CCD81502231F83E0065FC2B /* WebCoreResourceHandleAsOperationQueueDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = E152551416FD234F003D7ADB /* WebCoreResourceHandleAsOperationQueueDelegate.mm */; };
 		1CCDF5BE1990332400BCEBAD /* SVGToOTFFontConversion.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CCDF5BC1990332400BCEBAD /* SVGToOTFFontConversion.h */; };
@@ -7073,6 +7074,7 @@
 		1CAF56DE2530245A0017B472 /* DrawGlyphsRecorderCoreText.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DrawGlyphsRecorderCoreText.cpp; sourceTree = "<group>"; };
 		1CB6B4F8217B83930093B9CD /* TextDecorationThickness.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TextDecorationThickness.h; sourceTree = "<group>"; };
 		1CB6B4FB217B83940093B9CD /* TextUnderlineOffset.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TextUnderlineOffset.h; sourceTree = "<group>"; };
+		1CBF900D270FF8F6000C457D /* DisplayListResourceHeap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DisplayListResourceHeap.h; sourceTree = "<group>"; };
 		1CC54AFB270F92DA005BF8BE /* ProcessQualified.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProcessQualified.h; sourceTree = "<group>"; };
 		1CCDF5BB1990332400BCEBAD /* SVGToOTFFontConversion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGToOTFFontConversion.cpp; sourceTree = "<group>"; };
 		1CCDF5BC1990332400BCEBAD /* SVGToOTFFontConversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGToOTFFontConversion.h; sourceTree = "<group>"; };
@@ -18280,6 +18282,7 @@
 				0FE5FBCF1C3DD51E0007A2CA /* DisplayListRecorderImpl.h */,
 				0FE5FBD01C3DD51E0007A2CA /* DisplayListReplayer.cpp */,
 				0FE5FBD11C3DD51E0007A2CA /* DisplayListReplayer.h */,
+				1CBF900D270FF8F6000C457D /* DisplayListResourceHeap.h */,
 				1CE8863E26105A5F000C816C /* InMemoryDisplayList.cpp */,
 				1CE8863F26105A5F000C816C /* InMemoryDisplayList.h */,
 			);
@@ -32457,6 +32460,7 @@
 				F429950F270E75000032298B /* DisplayListRecorder.h in Headers */,
 				0FE5FBD71C3DD51E0007A2CA /* DisplayListRecorderImpl.h in Headers */,
 				0FE5FBD91C3DD51E0007A2CA /* DisplayListReplayer.h in Headers */,
+				1CBF900F270FF8F6000C457D /* DisplayListResourceHeap.h in Headers */,
 				49AF2D6914435D050016A784 /* DisplayRefreshMonitor.h in Headers */,
 				2D29ECC6192ECC8300984B78 /* DisplayRefreshMonitorClient.h in Headers */,
 				0FBB5FBE260991D20054572C /* DisplayRefreshMonitorFactory.h in Headers */,

Modified: trunk/Source/WebCore/platform/graphics/Font.h (283970 => 283971)


--- trunk/Source/WebCore/platform/graphics/Font.h	2021-10-12 06:32:55 UTC (rev 283970)
+++ trunk/Source/WebCore/platform/graphics/Font.h	2021-10-12 08:02:45 UTC (rev 283971)
@@ -391,8 +391,6 @@
     return width;
 }
 
-using FontRenderingResourceMap = HashMap<RenderingResourceIdentifier, Ref<Font>>;
-
 } // namespace WebCore
 
 namespace WTF {

Modified: trunk/Source/WebCore/platform/graphics/ImageBuffer.h (283970 => 283971)


--- trunk/Source/WebCore/platform/graphics/ImageBuffer.h	2021-10-12 06:32:55 UTC (rev 283970)
+++ trunk/Source/WebCore/platform/graphics/ImageBuffer.h	2021-10-12 08:02:45 UTC (rev 283971)
@@ -142,6 +142,4 @@
     virtual void drawConsuming(GraphicsContext&, const FloatRect& destRect, const FloatRect& srcRect, const ImagePaintingOptions&) = 0;
 };
 
-using ImageBufferHashMap = HashMap<RenderingResourceIdentifier, Ref<ImageBuffer>>;
-
 } // namespace WebCore

Modified: trunk/Source/WebCore/platform/graphics/NativeImage.h (283970 => 283971)


--- trunk/Source/WebCore/platform/graphics/NativeImage.h	2021-10-12 06:32:55 UTC (rev 283970)
+++ trunk/Source/WebCore/platform/graphics/NativeImage.h	2021-10-12 08:02:45 UTC (rev 283971)
@@ -75,6 +75,4 @@
     RenderingResourceIdentifier m_renderingResourceIdentifier;
 };
 
-using NativeImageHashMap = HashMap<RenderingResourceIdentifier, Ref<NativeImage>>;
-
 } // namespace WebCore

Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayList.cpp (283970 => 283971)


--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayList.cpp	2021-10-12 06:32:55 UTC (rev 283970)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayList.cpp	2021-10-12 08:02:45 UTC (rev 283971)
@@ -52,8 +52,7 @@
 #endif
 
 DisplayList::DisplayList(DisplayList&& other)
-    : m_imageBuffers(std::exchange(other.m_imageBuffers, { }))
-    , m_nativeImages(std::exchange(other.m_nativeImages, { }))
+    : m_resourceHeap(std::exchange(other.m_resourceHeap, { }))
     , m_items(std::exchange(other.m_items, nullptr))
     , m_drawingItemExtents(std::exchange(other.m_drawingItemExtents, { }))
 {
@@ -69,8 +68,7 @@
 
 DisplayList& DisplayList::operator=(DisplayList&& other)
 {
-    m_imageBuffers = std::exchange(other.m_imageBuffers, { });
-    m_nativeImages = std::exchange(other.m_nativeImages, { });
+    m_resourceHeap = std::exchange(other.m_resourceHeap, { });
     m_items = std::exchange(other.m_items, nullptr);
     m_drawingItemExtents = std::exchange(other.m_drawingItemExtents, { });
     return *this;
@@ -81,8 +79,7 @@
     if (m_items)
         m_items->clear();
     m_drawingItemExtents.clear();
-    m_imageBuffers.clear();
-    m_nativeImages.clear();
+    m_resourceHeap.clear();
 }
 
 bool DisplayList::shouldDumpForFlags(AsTextFlags flags, ItemHandle item)

Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayList.h (283970 => 283971)


--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayList.h	2021-10-12 06:32:55 UTC (rev 283970)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayList.h	2021-10-12 08:02:45 UTC (rev 283971)
@@ -27,6 +27,7 @@
 
 #include "DisplayListItemBuffer.h"
 #include "DisplayListItemType.h"
+#include "DisplayListResourceHeap.h"
 #include "FloatRect.h"
 #include "Font.h"
 #include "GraphicsContext.h"
@@ -73,9 +74,7 @@
 
     String asText(AsTextFlags) const;
 
-    const ImageBufferHashMap& imageBuffers() const { return m_imageBuffers; }
-    const NativeImageHashMap& nativeImages() const { return m_nativeImages; }
-    const FontRenderingResourceMap& fonts() const { return m_fonts; }
+    const ResourceHeap& resourceHeap() const { return m_resourceHeap; }
 
     WEBCORE_EXPORT void setItemBufferReadingClient(ItemBufferReadingClient*);
     WEBCORE_EXPORT void setItemBufferWritingClient(ItemBufferWritingClient*);
@@ -113,30 +112,22 @@
 
     void cacheImageBuffer(WebCore::ImageBuffer& imageBuffer)
     {
-        m_imageBuffers.ensure(imageBuffer.renderingResourceIdentifier(), [&]() {
-            return Ref { imageBuffer };
-        });
+        m_resourceHeap.add(imageBuffer.renderingResourceIdentifier(), Ref { imageBuffer });
     }
 
     void cacheNativeImage(NativeImage& image)
     {
-        m_nativeImages.ensure(image.renderingResourceIdentifier(), [&]() {
-            return Ref { image };
-        });
+        m_resourceHeap.add(image.renderingResourceIdentifier(), Ref { image });
     }
 
     void cacheFont(Font& font)
     {
-        m_fonts.ensure(font.renderingResourceIdentifier(), [&]() {
-            return Ref { font };
-        });
+        m_resourceHeap.add(font.renderingResourceIdentifier(), Ref { font });
     }
 
     static bool shouldDumpForFlags(AsTextFlags, ItemHandle);
 
-    ImageBufferHashMap m_imageBuffers;
-    NativeImageHashMap m_nativeImages;
-    FontRenderingResourceMap m_fonts;
+    ResourceHeap m_resourceHeap;
     std::unique_ptr<ItemBuffer> m_items;
     Vector<std::optional<FloatRect>> m_drawingItemExtents;
     bool m_tracksDrawingItemExtents { true };

Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.cpp (283970 => 283971)


--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.cpp	2021-10-12 06:32:55 UTC (rev 283970)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.cpp	2021-10-12 08:02:45 UTC (rev 283971)
@@ -28,6 +28,7 @@
 
 #include "DisplayListItems.h"
 #include "DisplayListIterator.h"
+#include "DisplayListResourceHeap.h"
 #include "GraphicsContext.h"
 #include "InMemoryDisplayList.h"
 #include "Logging.h"
@@ -36,13 +37,11 @@
 namespace WebCore {
 namespace DisplayList {
 
-Replayer::Replayer(GraphicsContext& context, const DisplayList& displayList, const ImageBufferHashMap* imageBuffers, const NativeImageHashMap* nativeImages, const FontRenderingResourceMap* fonts, ImageBuffer* maskImageBuffer, Delegate* delegate)
+Replayer::Replayer(GraphicsContext& context, const DisplayList& displayList, const ResourceHeap* resourceHeap, ImageBuffer* maskImageBuffer, Delegate* delegate)
     : m_context(context)
     , m_maskImageBuffer(maskImageBuffer)
     , m_displayList(displayList)
-    , m_imageBuffers(imageBuffers ? *imageBuffers : m_displayList.imageBuffers())
-    , m_nativeImages(nativeImages ? *nativeImages : m_displayList.nativeImages())
-    , m_fonts(fonts ? *fonts : m_displayList.fonts())
+    , m_resourceHeap(resourceHeap ? *resourceHeap : m_displayList.resourceHeap())
     , m_delegate(delegate)
 {
 }
@@ -55,11 +54,11 @@
 }
 
 template<class T>
-inline static std::optional<RenderingResourceIdentifier> applyImageBufferItem(GraphicsContext& context, const ImageBufferHashMap& imageBuffers, ItemHandle item, Replayer::Delegate* delegate)
+inline static std::optional<RenderingResourceIdentifier> applyImageBufferItem(GraphicsContext& context, const ResourceHeap& resourceHeap, ItemHandle item, Replayer::Delegate* delegate)
 {
     auto& imageBufferItem = item.get<T>();
     auto resourceIdentifier = imageBufferItem.imageBufferIdentifier();
-    if (auto* imageBuffer = imageBuffers.get(resourceIdentifier)) {
+    if (auto* imageBuffer = resourceHeap.getImageBuffer(resourceIdentifier)) {
         imageBufferItem.apply(context, *imageBuffer);
         if (delegate)
             delegate->recordResourceUse(resourceIdentifier);
@@ -69,11 +68,11 @@
 }
 
 template<class T>
-inline static std::optional<RenderingResourceIdentifier> applyNativeImageItem(GraphicsContext& context, const NativeImageHashMap& nativeImages, ItemHandle item, Replayer::Delegate* delegate)
+inline static std::optional<RenderingResourceIdentifier> applyNativeImageItem(GraphicsContext& context, const ResourceHeap& resourceHeap, ItemHandle item, Replayer::Delegate* delegate)
 {
     auto& nativeImageItem = item.get<T>();
     auto resourceIdentifier = nativeImageItem.imageIdentifier();
-    if (auto* image = nativeImages.get(resourceIdentifier)) {
+    if (auto* image = resourceHeap.getNativeImage(resourceIdentifier)) {
         nativeImageItem.apply(context, *image);
         if (delegate)
             delegate->recordResourceUse(resourceIdentifier);
@@ -82,7 +81,7 @@
     return resourceIdentifier;
 }
 
-inline static std::optional<RenderingResourceIdentifier> applySetStateItem(GraphicsContext& context, const NativeImageHashMap& nativeImages, ItemHandle item, Replayer::Delegate* delegate)
+inline static std::optional<RenderingResourceIdentifier> applySetStateItem(GraphicsContext& context, const ResourceHeap& resourceHeap, ItemHandle item, Replayer::Delegate* delegate)
 {
     auto& setStateItem = item.get<SetState>();
 
@@ -92,13 +91,13 @@
     NativeImage* fillPatternImage = nullptr;
 
     if ((strokePatternRenderingResourceIdentifier = setStateItem.strokePatternImageIdentifier())) {
-        strokePatternImage = nativeImages.get(strokePatternRenderingResourceIdentifier);
+        strokePatternImage = resourceHeap.getNativeImage(strokePatternRenderingResourceIdentifier);
         if (!strokePatternImage)
             return strokePatternRenderingResourceIdentifier;
     }
 
     if ((fillPatternRenderingResourceIdentifier = setStateItem.fillPatternImageIdentifier())) {
-        fillPatternImage = nativeImages.get(fillPatternRenderingResourceIdentifier);
+        fillPatternImage = resourceHeap.getNativeImage(fillPatternRenderingResourceIdentifier);
         if (!fillPatternImage)
             return fillPatternRenderingResourceIdentifier;
     }
@@ -116,11 +115,11 @@
 }
 
 template<class T>
-inline static std::optional<RenderingResourceIdentifier> applyFontItem(GraphicsContext& context, const FontRenderingResourceMap& fonts, ItemHandle item, Replayer::Delegate* delegate)
+inline static std::optional<RenderingResourceIdentifier> applyFontItem(GraphicsContext& context, const ResourceHeap& resourceHeap, ItemHandle item, Replayer::Delegate* delegate)
 {
     auto& fontItem = item.get<T>();
     auto resourceIdentifier = fontItem.fontIdentifier();
-    if (auto* font = fonts.get(resourceIdentifier)) {
+    if (auto* font = resourceHeap.getFont(resourceIdentifier)) {
         fontItem.apply(context, *font);
         if (delegate)
             delegate->recordResourceUse(resourceIdentifier);
@@ -135,37 +134,37 @@
         return { std::nullopt, std::nullopt };
 
     if (item.is<DrawImageBuffer>()) {
-        if (auto missingCachedResourceIdentifier = applyImageBufferItem<DrawImageBuffer>(context(), m_imageBuffers, item, m_delegate))
+        if (auto missingCachedResourceIdentifier = applyImageBufferItem<DrawImageBuffer>(context(), m_resourceHeap, item, m_delegate))
             return { StopReplayReason::MissingCachedResource, WTFMove(missingCachedResourceIdentifier) };
         return { std::nullopt, std::nullopt };
     }
 
     if (item.is<ClipToImageBuffer>()) {
-        if (auto missingCachedResourceIdentifier = applyImageBufferItem<ClipToImageBuffer>(context(), m_imageBuffers, item, m_delegate))
+        if (auto missingCachedResourceIdentifier = applyImageBufferItem<ClipToImageBuffer>(context(), m_resourceHeap, item, m_delegate))
             return { StopReplayReason::MissingCachedResource, WTFMove(missingCachedResourceIdentifier) };
         return { std::nullopt, std::nullopt };
     }
 
     if (item.is<DrawNativeImage>()) {
-        if (auto missingCachedResourceIdentifier = applyNativeImageItem<DrawNativeImage>(context(), m_nativeImages, item, m_delegate))
+        if (auto missingCachedResourceIdentifier = applyNativeImageItem<DrawNativeImage>(context(), m_resourceHeap, item, m_delegate))
             return { StopReplayReason::MissingCachedResource, WTFMove(missingCachedResourceIdentifier) };
         return { std::nullopt, std::nullopt };
     }
 
     if (item.is<DrawGlyphs>()) {
-        if (auto missingCachedResourceIdentifier = applyFontItem<DrawGlyphs>(context(), m_fonts, item, m_delegate))
+        if (auto missingCachedResourceIdentifier = applyFontItem<DrawGlyphs>(context(), m_resourceHeap, item, m_delegate))
             return { StopReplayReason::MissingCachedResource, WTFMove(missingCachedResourceIdentifier) };
         return { std::nullopt, std::nullopt };
     }
 
     if (item.is<DrawPattern>()) {
-        if (auto missingCachedResourceIdentifier = applyNativeImageItem<DrawPattern>(context(), m_nativeImages, item, m_delegate))
+        if (auto missingCachedResourceIdentifier = applyNativeImageItem<DrawPattern>(context(), m_resourceHeap, item, m_delegate))
             return { StopReplayReason::MissingCachedResource, WTFMove(missingCachedResourceIdentifier) };
         return { std::nullopt, std::nullopt };
     }
 
     if (item.is<SetState>()) {
-        if (auto missingCachedResourceIdentifier = applySetStateItem(context(), m_nativeImages, item, m_delegate))
+        if (auto missingCachedResourceIdentifier = applySetStateItem(context(), m_resourceHeap, item, m_delegate))
             return { StopReplayReason::MissingCachedResource, WTFMove(missingCachedResourceIdentifier) };
         return { std::nullopt, std::nullopt };
     }

Modified: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.h (283970 => 283971)


--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.h	2021-10-12 06:32:55 UTC (rev 283970)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListReplayer.h	2021-10-12 08:02:45 UTC (rev 283971)
@@ -37,6 +37,8 @@
 
 namespace DisplayList {
 
+class ResourceHeap;
+
 enum class StopReplayReason : uint8_t {
     ReplayedAllItems,
     MissingCachedResource,
@@ -57,7 +59,7 @@
     WTF_MAKE_NONCOPYABLE(Replayer);
 public:
     class Delegate;
-    WEBCORE_EXPORT Replayer(GraphicsContext&, const DisplayList&, const ImageBufferHashMap* = nullptr, const NativeImageHashMap* = nullptr, const FontRenderingResourceMap* = nullptr, WebCore::ImageBuffer* maskImageBuffer = nullptr, Delegate* = nullptr);
+    WEBCORE_EXPORT Replayer(GraphicsContext&, const DisplayList&, const ResourceHeap* = nullptr, WebCore::ImageBuffer* maskImageBuffer = nullptr, Delegate* = nullptr);
     WEBCORE_EXPORT ~Replayer();
 
     WEBCORE_EXPORT ReplayResult replay(const FloatRect& initialClip = { }, bool trackReplayList = false);
@@ -78,9 +80,7 @@
     GraphicsContext& m_context;
     RefPtr<WebCore::ImageBuffer> m_maskImageBuffer;
     const DisplayList& m_displayList;
-    const ImageBufferHashMap& m_imageBuffers;
-    const NativeImageHashMap& m_nativeImages;
-    const FontRenderingResourceMap& m_fonts;
+    const ResourceHeap& m_resourceHeap;
     Delegate* m_delegate;
 };
 

Added: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h (0 => 283971)


--- trunk/Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h	                        (rev 0)
+++ trunk/Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h	2021-10-12 08:02:45 UTC (rev 283971)
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2021 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. ``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
+ * 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 "Font.h"
+#include "ImageBuffer.h"
+#include "NativeImage.h"
+#include "RenderingResourceIdentifier.h"
+#include <wtf/HashMap.h>
+#include <wtf/RefCounted.h>
+
+namespace WebCore {
+namespace DisplayList {
+
+class ResourceHeap {
+public:
+    void add(RenderingResourceIdentifier renderingResourceIdentifier, Ref<ImageBuffer>&& imageBuffer)
+    {
+        if (m_resources.add(renderingResourceIdentifier, RefPtr<ImageBuffer>(WTFMove(imageBuffer))).isNewEntry)
+            ++m_imageBufferCount;
+    }
+
+    void add(RenderingResourceIdentifier renderingResourceIdentifier, Ref<NativeImage>&& image)
+    {
+        if (m_resources.add(renderingResourceIdentifier, RefPtr<NativeImage>(WTFMove(image))).isNewEntry)
+            ++m_nativeImageCount;
+    }
+
+    void add(RenderingResourceIdentifier renderingResourceIdentifier, Ref<Font>&& font)
+    {
+        if (m_resources.add(renderingResourceIdentifier, RefPtr<Font>(WTFMove(font))).isNewEntry)
+            ++m_fontCount;
+    }
+
+    ImageBuffer* getImageBuffer(RenderingResourceIdentifier renderingResourceIdentifier) const
+    {
+        return get<ImageBuffer>(renderingResourceIdentifier);
+    }
+
+    NativeImage* getNativeImage(RenderingResourceIdentifier renderingResourceIdentifier) const
+    {
+        return get<NativeImage>(renderingResourceIdentifier);
+    }
+
+    Font* getFont(RenderingResourceIdentifier renderingResourceIdentifier) const
+    {
+        return get<Font>(renderingResourceIdentifier);
+    }
+
+    bool hasImageBuffer() const
+    {
+        return m_imageBufferCount;
+    }
+
+    bool hasNativeImage() const
+    {
+        return m_nativeImageCount;
+    }
+
+    bool hasFont() const
+    {
+        return m_fontCount;
+    }
+
+    bool removeImageBuffer(RenderingResourceIdentifier renderingResourceIdentifier)
+    {
+        return remove<ImageBuffer>(renderingResourceIdentifier, m_imageBufferCount);
+    }
+
+    bool removeNativeImage(RenderingResourceIdentifier renderingResourceIdentifier)
+    {
+        return remove<NativeImage>(renderingResourceIdentifier, m_nativeImageCount);
+    }
+
+    bool removeFont(RenderingResourceIdentifier renderingResourceIdentifier)
+    {
+        return remove<Font>(renderingResourceIdentifier, m_fontCount);
+    }
+
+    void clear()
+    {
+        m_resources.clear();
+        m_imageBufferCount = 0;
+        m_nativeImageCount = 0;
+        m_fontCount = 0;
+    }
+
+    void deleteAllFonts()
+    {
+        m_resources.removeIf([] (const auto& resource) {
+            return WTF::holds_alternative<RefPtr<Font>>(resource.value);
+        });
+        m_fontCount = 0;
+    }
+
+private:
+    template <typename T>
+    T* get(RenderingResourceIdentifier renderingResourceIdentifier) const
+    {
+        auto iterator = m_resources.find(renderingResourceIdentifier);
+        if (iterator == m_resources.end())
+            return nullptr;
+        if (!WTF::holds_alternative<RefPtr<T>>(iterator->value))
+            return nullptr;
+        return WTF::get<RefPtr<T>>(iterator->value).get();
+    }
+
+    template <typename T>
+    bool remove(RenderingResourceIdentifier renderingResourceIdentifier, unsigned& counter)
+    {
+        auto iterator = m_resources.find(renderingResourceIdentifier);
+        if (iterator == m_resources.end())
+            return false;
+        if (!WTF::holds_alternative<RefPtr<T>>(iterator->value))
+            return false;
+        auto result = m_resources.remove(iterator);
+        ASSERT(result);
+        --counter;
+        return result;
+    }
+
+    using Resource = Variant<RefPtr<ImageBuffer>, RefPtr<NativeImage>, RefPtr<Font>>;
+    HashMap<RenderingResourceIdentifier, Resource> m_resources;
+    unsigned m_imageBufferCount { 0 };
+    unsigned m_nativeImageCount { 0 };
+    unsigned m_fontCount { 0 };
+};
+
+}
+}
Property changes on: trunk/Source/WebCore/platform/graphics/displaylists/DisplayListResourceHeap.h
___________________________________________________________________

Added: svn:eol-style

+native \ No newline at end of property

Added: svn:keywords

+Author Date Id Rev URL \ No newline at end of property

Modified: trunk/Source/WebKit/ChangeLog (283970 => 283971)


--- trunk/Source/WebKit/ChangeLog	2021-10-12 06:32:55 UTC (rev 283970)
+++ trunk/Source/WebKit/ChangeLog	2021-10-12 08:02:45 UTC (rev 283971)
@@ -1,5 +1,32 @@
 2021-10-11  Myles C. Maxfield  <[email protected]>
 
+        [GPU Process] Unique RenderingResourceIdentifiers Part 8: Consolidate DisplayList::ResourceHeap
+        https://bugs.webkit.org/show_bug.cgi?id=231411
+        <rdar://problem/84013167>
+
+        Reviewed by Simon Fraser.
+
+        * GPUProcess/graphics/RemoteRenderingBackend.cpp:
+        (WebKit::RemoteRenderingBackend::submit):
+        * GPUProcess/graphics/RemoteResourceCache.cpp:
+        (WebKit::RemoteResourceCache::RemoteResourceCache):
+        (WebKit::RemoteResourceCache::cacheImageBuffer):
+        (WebKit::RemoteResourceCache::cachedImageBuffer const):
+        (WebKit::RemoteResourceCache::cacheNativeImage):
+        (WebKit::RemoteResourceCache::cachedNativeImage const):
+        (WebKit::RemoteResourceCache::cacheFont):
+        (WebKit::RemoteResourceCache::cachedFont const):
+        (WebKit::RemoteResourceCache::deleteAllFonts):
+        (WebKit::RemoteResourceCache::maybeRemoveResource):
+        (WebKit::RemoteResourceCache::updateHasActiveDrawables):
+        * GPUProcess/graphics/RemoteResourceCache.h:
+        (WebKit::RemoteResourceCache::resourceHeap const):
+        (WebKit::RemoteResourceCache::imageBuffers const): Deleted.
+        (WebKit::RemoteResourceCache::nativeImages const): Deleted.
+        (WebKit::RemoteResourceCache::fonts const): Deleted.
+
+2021-10-11  Myles C. Maxfield  <[email protected]>
+
         [GPU Process] Unique RenderingResourceIdentifiers Part 5: Migrate RemoteResourceCache to QualifiedRenderingResourceIdentifier
         https://bugs.webkit.org/show_bug.cgi?id=231407
         <rdar://problem/84010479>

Modified: trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp (283970 => 283971)


--- trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp	2021-10-12 06:32:55 UTC (rev 283970)
+++ trunk/Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp	2021-10-12 08:02:45 UTC (rev 283971)
@@ -238,9 +238,7 @@
     return WebCore::DisplayList::Replayer {
         destination.context(),
         displayList,
-        &remoteResourceCache().imageBuffers(),
-        &remoteResourceCache().nativeImages(),
-        &remoteResourceCache().fonts(),
+        &remoteResourceCache().resourceHeap(),
         m_currentMaskImageBuffer.get(),
         &replayerDelegate
     }.replay();

Modified: trunk/Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp (283970 => 283971)


--- trunk/Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp	2021-10-12 06:32:55 UTC (rev 283970)
+++ trunk/Source/WebKit/GPUProcess/graphics/RemoteResourceCache.cpp	2021-10-12 08:02:45 UTC (rev 283971)
@@ -38,9 +38,7 @@
 
 RemoteResourceCache::RemoteResourceCache(RemoteResourceCache&& other)
     : m_webProcessIdentifier(other.m_webProcessIdentifier)
-    , m_imageBuffers(WTFMove(other.m_imageBuffers))
-    , m_nativeImages(WTFMove(other.m_nativeImages))
-    , m_fonts(WTFMove(other.m_fonts))
+    , m_resourceHeap(WTFMove(other.m_resourceHeap))
     , m_resourceUseCounters(WTFMove(other.m_resourceUseCounters))
 {
     updateHasActiveDrawables();
@@ -50,7 +48,7 @@
 {
     ASSERT(renderingResourceIdentifier.object() == imageBuffer->renderingResourceIdentifier());
     ASSERT(renderingResourceIdentifier.processIdentifier() == m_webProcessIdentifier);
-    m_imageBuffers.add(renderingResourceIdentifier.object(), WTFMove(imageBuffer));
+    m_resourceHeap.add(renderingResourceIdentifier.object(), WTFMove(imageBuffer));
     updateHasActiveDrawables();
 
     ensureResourceUseCounter(renderingResourceIdentifier);
@@ -59,7 +57,7 @@
 ImageBuffer* RemoteResourceCache::cachedImageBuffer(QualifiedRenderingResourceIdentifier renderingResourceIdentifier) const
 {
     ASSERT(renderingResourceIdentifier.processIdentifier() == m_webProcessIdentifier);
-    return m_imageBuffers.get(renderingResourceIdentifier.object());
+    return m_resourceHeap.getImageBuffer(renderingResourceIdentifier.object());
 }
 
 void RemoteResourceCache::cacheNativeImage(Ref<NativeImage>&& image, QualifiedRenderingResourceIdentifier renderingResourceIdentifier)
@@ -66,7 +64,7 @@
 {
     ASSERT(renderingResourceIdentifier.object() == image->renderingResourceIdentifier());
     ASSERT(renderingResourceIdentifier.processIdentifier() == m_webProcessIdentifier);
-    m_nativeImages.add(renderingResourceIdentifier.object(), WTFMove(image));
+    m_resourceHeap.add(renderingResourceIdentifier.object(), WTFMove(image));
     updateHasActiveDrawables();
 
     ensureResourceUseCounter(renderingResourceIdentifier);
@@ -75,7 +73,7 @@
 NativeImage* RemoteResourceCache::cachedNativeImage(QualifiedRenderingResourceIdentifier renderingResourceIdentifier) const
 {
     ASSERT(renderingResourceIdentifier.processIdentifier() == m_webProcessIdentifier);
-    return m_nativeImages.get(renderingResourceIdentifier.object());
+    return m_resourceHeap.getNativeImage(renderingResourceIdentifier.object());
 }
 
 void RemoteResourceCache::cacheFont(Ref<Font>&& font, QualifiedRenderingResourceIdentifier renderingResourceIdentifier)
@@ -82,7 +80,7 @@
 {
     ASSERT(renderingResourceIdentifier.object() == font->renderingResourceIdentifier());
     ASSERT(renderingResourceIdentifier.processIdentifier() == m_webProcessIdentifier);
-    m_fonts.add(renderingResourceIdentifier.object(), WTFMove(font));
+    m_resourceHeap.add(renderingResourceIdentifier.object(), WTFMove(font));
 
     ensureResourceUseCounter(renderingResourceIdentifier);
 }
@@ -89,7 +87,7 @@
 
 Font* RemoteResourceCache::cachedFont(QualifiedRenderingResourceIdentifier renderingResourceIdentifier) const
 {
-    return m_fonts.get(renderingResourceIdentifier.object());
+    return m_resourceHeap.getFont(renderingResourceIdentifier.object());
 }
 
 void RemoteResourceCache::ensureResourceUseCounter(QualifiedRenderingResourceIdentifier renderingResourceIdentifier)
@@ -105,7 +103,7 @@
 
 void RemoteResourceCache::deleteAllFonts()
 {
-    m_fonts.clear();
+    m_resourceHeap.deleteAllFonts();
 }
 
 bool RemoteResourceCache::maybeRemoveResource(QualifiedRenderingResourceIdentifier renderingResourceIdentifier, ResourceUseCountersMap::iterator& iterator)
@@ -149,11 +147,12 @@
 
     m_resourceUseCounters.remove(iterator);
 
-    if (m_imageBuffers.remove(renderingResourceIdentifier.object()) || m_nativeImages.remove(renderingResourceIdentifier.object())) {
+    if (m_resourceHeap.removeImageBuffer(renderingResourceIdentifier.object())
+        || m_resourceHeap.removeNativeImage(renderingResourceIdentifier.object())) {
         updateHasActiveDrawables();
         return true;
     }
-    if (m_fonts.remove(renderingResourceIdentifier.object()))
+    if (m_resourceHeap.removeFont(renderingResourceIdentifier.object()))
         return true;
 
     // Caching the remote resource should have happened before releasing it.
@@ -185,7 +184,7 @@
 
 void RemoteResourceCache::updateHasActiveDrawables()
 {
-    m_hasActiveDrawables = !m_imageBuffers.isEmpty() || !m_nativeImages.isEmpty();
+    m_hasActiveDrawables = m_resourceHeap.hasImageBuffer() || m_resourceHeap.hasNativeImage();
 }
 
 } // namespace WebKit

Modified: trunk/Source/WebKit/GPUProcess/graphics/RemoteResourceCache.h (283970 => 283971)


--- trunk/Source/WebKit/GPUProcess/graphics/RemoteResourceCache.h	2021-10-12 06:32:55 UTC (rev 283970)
+++ trunk/Source/WebKit/GPUProcess/graphics/RemoteResourceCache.h	2021-10-12 08:02:45 UTC (rev 283971)
@@ -54,9 +54,7 @@
     bool releaseRemoteResource(QualifiedRenderingResourceIdentifier, uint64_t useCount);
     void recordResourceUse(QualifiedRenderingResourceIdentifier);
 
-    const WebCore::ImageBufferHashMap& imageBuffers() const { return m_imageBuffers; }
-    const WebCore::NativeImageHashMap& nativeImages() const { return m_nativeImages; }
-    const WebCore::FontRenderingResourceMap& fonts() const { return m_fonts; }
+    const WebCore::DisplayList::ResourceHeap& resourceHeap() const { return m_resourceHeap; }
 
     bool hasActiveDrawables() const { return m_hasActiveDrawables; }
 
@@ -89,9 +87,7 @@
 
     WebCore::ProcessIdentifier m_webProcessIdentifier;
 
-    WebCore::ImageBufferHashMap m_imageBuffers;
-    WebCore::NativeImageHashMap m_nativeImages;
-    WebCore::FontRenderingResourceMap m_fonts;
+    WebCore::DisplayList::ResourceHeap m_resourceHeap;
     std::atomic<bool> m_hasActiveDrawables { false };
 
     ResourceUseCountersMap m_resourceUseCounters;

Modified: trunk/Tools/ChangeLog (283970 => 283971)


--- trunk/Tools/ChangeLog	2021-10-12 06:32:55 UTC (rev 283970)
+++ trunk/Tools/ChangeLog	2021-10-12 08:02:45 UTC (rev 283971)
@@ -1,3 +1,14 @@
+2021-10-11  Myles C. Maxfield  <[email protected]>
+
+        [GPU Process] Unique RenderingResourceIdentifiers Part 8: Consolidate DisplayList::ResourceHeap
+        https://bugs.webkit.org/show_bug.cgi?id=231411
+        <rdar://problem/84013167>
+
+        Reviewed by Simon Fraser.
+
+        * TestWebKitAPI/Tests/WebCore/cg/DisplayListTestsCG.cpp:
+        (TestWebKitAPI::TEST):
+
 2021-10-11  Darin Adler  <[email protected]>
 
         Slightly better idiom for ARC debug autorelease workaround

Modified: trunk/Tools/TestWebKitAPI/Tests/WebCore/cg/DisplayListTestsCG.cpp (283970 => 283971)


--- trunk/Tools/TestWebKitAPI/Tests/WebCore/cg/DisplayListTestsCG.cpp	2021-10-12 06:32:55 UTC (rev 283970)
+++ trunk/Tools/TestWebKitAPI/Tests/WebCore/cg/DisplayListTestsCG.cpp	2021-10-12 08:02:45 UTC (rev 283971)
@@ -31,6 +31,7 @@
 #include <WebCore/DisplayList.h>
 #include <WebCore/DisplayListItems.h>
 #include <WebCore/DisplayListReplayer.h>
+#include <WebCore/DisplayListResourceHeap.h>
 #include <WebCore/Gradient.h>
 #include <WebCore/GraphicsContextCG.h>
 
@@ -72,10 +73,10 @@
 
     {
         auto imageBuffer = ImageBuffer::create({ 100, 100 }, RenderingMode::Unaccelerated, 1, colorSpace, PixelFormat::BGRA8);
-        ImageBufferHashMap imageBufferMap;
-        imageBufferMap.set(imageBufferIdentifier, imageBuffer.releaseNonNull());
+        ResourceHeap resourceHeap;
+        resourceHeap.add(imageBufferIdentifier, imageBuffer.releaseNonNull());
 
-        Replayer replayer { context, list, &imageBufferMap };
+        Replayer replayer { context, list, &resourceHeap };
         auto result = replayer.replay();
         EXPECT_EQ(result.numberOfBytesRead, list.sizeInBytes());
         EXPECT_EQ(result.reasonForStopping, StopReplayReason::ReplayedAllItems);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to