Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: de2edaa00af9a1ba0f9e9caa0676c2ce4c3b73c8
https://github.com/WebKit/WebKit/commit/de2edaa00af9a1ba0f9e9caa0676c2ce4c3b73c8
Author: Youenn Fablet <[email protected]>
Date: 2022-10-25 (Tue, 25 Oct 2022)
Changed paths:
M Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp
M Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h
Log Message:
-----------
Optimize postMessage between two MessageChannel ports living in the same
process
https://bugs.webkit.org/show_bug.cgi?id=246943
rdar://problem/101497189
Reviewed by Alex Christensen.
Some objects may be heavy to transfer from one process to another
(RTCDataChannel, encoded chunks, video frames...).
It is best if we can use the same code path as when doing Worker::postMessage.
This is feasible as long as we keep the order of the messages, since each
MessagePort has its own event queue.
We introduce a map of port id to messages in WebMessagePortChannelProvider.
We fill the map whenever creating or whenever entangling a port in the process.
When postMessaging to that port, we check whether it is in process and if so
add messages to the local map.
When taking messages, we still go to network process but complement any message
we may find by adding the local messages.
* Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp:
(WebKit::WebMessagePortChannelProvider::createNewMessagePortChannel):
(WebKit::WebMessagePortChannelProvider::entangleLocalPortInThisProcessToRemote):
(WebKit::WebMessagePortChannelProvider::messagePortDisentangled):
(WebKit::WebMessagePortChannelProvider::messagePortClosed):
(WebKit::WebMessagePortChannelProvider::takeAllMessagesForPort):
(WebKit::WebMessagePortChannelProvider::postMessageToRemote):
(WebKit::WebMessagePortChannelProvider::checkRemotePortForActivity):
* Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h:
Canonical link: https://commits.webkit.org/255948@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes