[webkit-changes] [WebKit/WebKit] 03178c: ifdef out IPC::MessageName values that aren't appl...

Kimmo Kinnunen noreply at github.com
Mon Dec 19 00:18:07 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 03178c5e0622131ae0a2b19155e8c25b32e16447
      https://github.com/WebKit/WebKit/commit/03178c5e0622131ae0a2b19155e8c25b32e16447
  Author: Kimmo Kinnunen <kkinnunen at apple.com>
  Date:   2022-12-19 (Mon, 19 Dec 2022)

  Changed paths:
    M Source/WebKit/Scripts/webkit/messages.py
    M Source/WebKit/Scripts/webkit/tests/MessageNames.cpp
    M Source/WebKit/Scripts/webkit/tests/MessageNames.h
    M Source/WebKit/Scripts/webkit/tests/TestWithCVPixelBufferMessageReceiver.cpp
    M Source/WebKit/Scripts/webkit/tests/TestWithLegacyReceiverMessageReceiver.cpp
    M Source/WebKit/Scripts/webkit/tests/TestWithStreamMessageReceiver.cpp
    M Source/WebKit/Scripts/webkit/tests/TestWithSuperclassMessageReceiver.cpp
    M Source/WebKit/Scripts/webkit/tests/TestWithoutAttributesMessageReceiver.cpp

  Log Message:
  -----------
  ifdef out IPC::MessageName values that aren't applicable
https://bugs.webkit.org/show_bug.cgi?id=239893
rdar://problem/92511440

Reviewed by Chris Dumez.

Patch by Cameron McCormack <heycam at apple.com> and Kimmo Kinnunen <kkinnunen at apple.com>.

IPC MessageName validation is slow. The message name is validated on decoding,
and it is also validated on Debug builds when encoding.

Fix by making sure the ifdefs are part of the enum definition. The compiler
allocates consecutive enum values and as such the validation can be a comparison
instead of a large switch statement.

Improves webgl/2.0.y/conformance2/state/gl-object-get-calls.html Debug runtime
from 150s to 80s on M1 Max for WebGL GPUP.

* Source/WebKit/Scripts/webkit/messages.py:
(MessageEnumerator.condition):
(MessageEnumerator):
(MessageEnumerator.synchronous):
(MessageEnumerator.sort_key):
(async_message_statement):
(sync_message_statement):
(generate_message_handler.collect_message_statements):
(generate_message_handler):
(generate_message_names_header):
(generate_message_names_header.MessageName):
(generate_message_names_implementation):
* Source/WebKit/Scripts/webkit/tests/MessageNames.cpp:
(IPC::description): Deleted.
(IPC::receiverName): Deleted.
(IPC::messageAllowedWhenWaitingForSyncReply): Deleted.
(IPC::messageAllowedWhenWaitingForUnboundedSyncReply): Deleted.
(WTF::void>): Deleted.
* Source/WebKit/Scripts/webkit/tests/MessageNames.h:
(IPC::receiverName):
(IPC::description):
(IPC::messageAllowedWhenWaitingForSyncReply):
(IPC::messageAllowedWhenWaitingForUnboundedSyncReply):
(IPC::messageIsSync):
(WTF::void>):
* Source/WebKit/Scripts/webkit/tests/TestWithCVPixelBufferMessageReceiver.cpp:
(WebKit::TestWithCVPixelBuffer::didReceiveMessage):
* Source/WebKit/Scripts/webkit/tests/TestWithLegacyReceiverMessageReceiver.cpp:
(WebKit::TestWithLegacyReceiver::didReceiveTestWithLegacyReceiverMessage):
* Source/WebKit/Scripts/webkit/tests/TestWithStreamMessageReceiver.cpp:
(WebKit::TestWithStream::didReceiveStreamMessage):
* Source/WebKit/Scripts/webkit/tests/TestWithSuperclassMessageReceiver.cpp:
(WebKit::TestWithSuperclass::didReceiveMessage):
* Source/WebKit/Scripts/webkit/tests/TestWithoutAttributesMessageReceiver.cpp:
(WebKit::TestWithoutAttributes::didReceiveMessage):

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




More information about the webkit-changes mailing list