Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: db14efcc24bcc45321da73cc77b502b0dcab3e66
      
https://github.com/WebKit/WebKit/commit/db14efcc24bcc45321da73cc77b502b0dcab3e66
  Author: Kimmo Kinnunen <[email protected]>
  Date:   2025-12-01 (Mon, 01 Dec 2025)

  Changed paths:
    M Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp
    M Source/WebCore/bindings/js/ScriptBufferSourceProvider.h
    M Source/WebCore/bindings/js/WebAssemblyScriptBufferSourceProvider.h
    M Source/WebCore/loader/SubstituteResource.h
    M Source/WebCore/platform/SharedBuffer.cpp
    M Source/WebCore/platform/SharedBuffer.h
    M Source/WebCore/workers/ScriptBuffer.cpp
    M Source/WebCore/workers/ScriptBuffer.h
    M Source/WebCore/workers/WorkerFontLoadRequest.cpp
    M Source/WebCore/workers/service/server/SWScriptStorage.cpp
    M Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in

  Log Message:
  -----------
  ScriptBuffer IPC serialization is doing redundant work
https://bugs.webkit.org/show_bug.cgi?id=303135
rdar://problem/165440987

Reviewed by Jean-Yves Avenard.

When serializing ScriptBuffer for IPC, serialization would create:
 - SharedMemory
 - ShareableResource
 - ShareableResourceHandle

ScriptBuffer contains a FragmentedSharedBuffer. We already have
IPC serialization for FragmentedSharedBuffer. We should simply use that.

Add FragmentedSharedBuffer serialization feature where single-segment
mmap-backed data is sent as directly shared memory.

This is work towards removing SharedMemory::wrapMap, which is unsafe
function and should be removed in favor of
SharedMemoryHandle::createVMShared() used here.

Removes
SharedBufferBuilder& 
SharedBufferBuilder::operator=(RefPtr<FragmentedSharedBuffer>&&)
because it was buggy (did not reset()). It also is overly specific
operation for what it does.

Removes ShareBufferBuilder(RefPtr<..SharedBuffer>&&) constructor
variants, as they did not adopt the ptr, but implied that they did. Their
lack of const qualified ..SharedBuffer and use of rvalue RefPtr vs.
ShareBufferBuilder::append(const FragmentedSharedBuffer&) created
inconsistent API surface.

* Source/WebCore/Modules/fetch/FetchBodyConsumer.cpp:
(WebCore::FetchBodyConsumer::setData):
* Source/WebCore/bindings/js/ScriptBufferSourceProvider.h:
* Source/WebCore/bindings/js/WebAssemblyScriptBufferSourceProvider.h:
* Source/WebCore/loader/SubstituteResource.h:
(WebCore::SubstituteResource::SubstituteResource):
* Source/WebCore/platform/SharedBuffer.cpp:
(WebCore::FragmentedSharedBuffer::toIPCData const):
(WebCore::SharedBufferBuilder::initialize): Deleted.
* Source/WebCore/platform/SharedBuffer.h:
(WebCore::SharedBufferBuilder::SharedBufferBuilder):
* Source/WebCore/workers/ScriptBuffer.cpp:
(WebCore::ScriptBuffer::ScriptBuffer):
(WebCore::tryConvertToShareableResourceHandle): Deleted.
(WebCore::ScriptBuffer::fromIPCData): Deleted.
(WebCore::ScriptBuffer::ipcData const): Deleted.
* Source/WebCore/workers/ScriptBuffer.h:
(WebCore::ScriptBuffer::buffer const):
(WebCore::ScriptBuffer::ScriptBuffer):
(WebCore::ScriptBuffer::protectedBuffer const): Deleted.
* Source/WebCore/workers/WorkerFontLoadRequest.cpp:
(WebCore::WorkerFontLoadRequest::ensureCustomFontData):
* Source/WebCore/workers/service/server/SWScriptStorage.cpp:
(WebCore::SWScriptStorage::store):
(WebCore::SWScriptStorage::retrieve):
* Source/WebKit/Shared/WebCoreArgumentCoders.serialization.in:

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to