Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4905aa0e344500a0fcbbc873abed049ba6dd28c4
      
https://github.com/WebKit/WebKit/commit/4905aa0e344500a0fcbbc873abed049ba6dd28c4
  Author: Chris Dumez <[email protected]>
  Date:   2023-10-05 (Thu, 05 Oct 2023)

  Changed paths:
    M Source/WebCore/platform/graphics/Path.cpp
    M Source/WebCore/platform/graphics/Path.h
    M Source/WebCore/platform/graphics/PathImpl.h
    M Source/WebCore/platform/graphics/PathStream.cpp
    M Source/WebCore/platform/graphics/PathStream.h
    M Source/WebCore/platform/graphics/cairo/PathCairo.cpp
    M Source/WebCore/platform/graphics/cairo/PathCairo.h
    M Source/WebCore/platform/graphics/cg/PathCG.cpp
    M Source/WebCore/platform/graphics/cg/PathCG.h

  Log Message:
  -----------
  Reduce indirection in Path / PathStream
https://bugs.webkit.org/show_bug.cgi?id=262623

Reviewed by Simon Fraser.

Reduce indirection in Path / PathStream. PathStream now olds the vector of
segments directly instead of using another heap-allocated refcounted object
to hold the segment vector. This refcounted object was used to facilitate
sharing and copy on write. However, we can achieve the same thing by having
the Path objects sharing the same PathStream and cloning the PathStream only
on write.

Path::ensureImpl() was showing as a big source of fastMalloc() in profiles
and this should help with that.

* Source/WebCore/platform/graphics/Path.cpp:
(WebCore::Path::Path):
(WebCore::Path::operator== const):
(WebCore::Path::setImpl):
(WebCore::Path::asImpl):
(WebCore::Path::asImpl const):
(WebCore::Path::operator=): Deleted.
* Source/WebCore/platform/graphics/Path.h:
* Source/WebCore/platform/graphics/PathImpl.h:
* Source/WebCore/platform/graphics/PathStream.cpp:
(WebCore::PathStream::create):
(WebCore::PathStream::PathStream):
(WebCore::PathStream::copy const):
(WebCore::PathStream::lastIfMoveTo const):
(WebCore::PathStream::applySegments const):
(WebCore::PathStream::applyElements const):
(WebCore::PathStream::transform):
(WebCore::PathStream::singleSegment const):
(WebCore::PathStream::isClosed const):
(WebCore::PathStream::currentPoint const):
(WebCore::PathStream::fastBoundingRect const):
(WebCore::PathStream::boundingRect const):
(WebCore::PathStream::clone const): Deleted.
(WebCore::PathStream::operator== const): Deleted.
(WebCore::PathStream::segments const): Deleted.
* Source/WebCore/platform/graphics/PathStream.h:
* Source/WebCore/platform/graphics/cg/PathCG.cpp:
(WebCore::PathCG::create):
(WebCore::PathCG::copy const):
(WebCore::PathCG::clone const): Deleted.
(WebCore::PathCG::operator== const): Deleted.
* Source/WebCore/platform/graphics/cg/PathCG.h:

Canonical link: https://commits.webkit.org/268923@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to