[webkit-changes] [WebKit/WebKit] 005184: Don't initialize signal handing machinery if we're...

EWS noreply at github.com
Tue Feb 21 12:16:48 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0051847d2a3954b88fc4669e9238f730df68cfd4
      https://github.com/WebKit/WebKit/commit/0051847d2a3954b88fc4669e9238f730df68cfd4
  Author: Mark Lam <mark.lam at apple.com>
  Date:   2023-02-21 (Tue, 21 Feb 2023)

  Changed paths:
    M Source/JavaScriptCore/jsc.cpp
    M Source/JavaScriptCore/runtime/InitializeThreading.cpp
    M Source/JavaScriptCore/runtime/VMEntryScope.cpp
    M Source/JavaScriptCore/tools/JSDollarVM.cpp
    M Source/JavaScriptCore/wasm/WasmCapabilities.h
    M Source/JavaScriptCore/wasm/WasmFaultSignalHandler.h
    M Source/JavaScriptCore/wasm/WasmMachineThreads.h
    M Source/WTF/wtf/threads/Signals.cpp
    M Source/WTF/wtf/threads/Signals.h
    M Tools/TestWebKitAPI/Tests/WTF/Signals.cpp

  Log Message:
  -----------
  Don't initialize signal handing machinery if we're not going to use it.
https://bugs.webkit.org/show_bug.cgi?id=252651
rdar://105712893

Reviewed by Yusuke Suzuki.

This saves some memory when the signal handling machinery is not needed.

1. Move the handling of JS_SHELL_WAIT_FOR_SIGUSR2_TO_EXIT in jsc.cpp into jscmain.
   This is because addSignalHandler() depends on JSC Options, and the Options have
   not be initialized yet at its previous location.

2. Make signal handling stages explicit with an InitState in WTF::Config.  The
   InitState can go from Uninitialized to InitializedHandlerThread, and then to
   AddedHandlers.  The InitState cannot go in reverse.

   The client must call initializeSignalHandling() to advance the InitState from
   Uninitialized to InitializedHandlerThread.

   The client must have called addSignalHandler() in order to advance the InitState
   from InitializedHandlerThread to AddedHandlers.  If addSignalHandler() is called
   without first calling initializeSignalHandling(), a RELEASE_ASSERT will fail.

   The client can only call registerThreadForMachExceptionHandling() after one or
   more addSignalHandler() has been called.  registerThreadForMachExceptionHandling()
   will not RELEASE_ASSERT that the InitState is AddedHandlers.

3. Added stub functions for Wasm::isSupported(), Wasm::activateSignalingMemory(),
   Wasm::prepareSignalingMemory(), Wasm::startTrackingCurrentThread(), and
   Wasm::resetInstructionCacheOnAllThreads() so that they can be called without first
   checking #if on some WASM #define variable.

* Source/JavaScriptCore/jsc.cpp:
(main):
(CommandLine::parseArguments):
(jscmain):
* Source/JavaScriptCore/runtime/InitializeThreading.cpp:
(JSC::initialize):
* Source/JavaScriptCore/runtime/VMEntryScope.cpp:
(JSC::VMEntryScope::VMEntryScope):
* Source/JavaScriptCore/tools/JSDollarVM.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/wasm/WasmCapabilities.h:
(JSC::Wasm::isSupported):
* Source/JavaScriptCore/wasm/WasmFaultSignalHandler.h:
(JSC::Wasm::activateSignalingMemory):
(JSC::Wasm::prepareSignalingMemory):
* Source/JavaScriptCore/wasm/WasmMachineThreads.h:
(JSC::Wasm::startTrackingCurrentThread):
(JSC::Wasm::resetInstructionCacheOnAllThreads):
* Source/WTF/wtf/threads/Signals.cpp:
(WTF::SignalHandlers::add):
(WTF::initMachExceptionHandlerThread):
(WTF::registerThreadForMachExceptionHandling):
(WTF::addSignalHandler):
(WTF::activateSignalHandlersFor):
(WTF::startMachExceptionHandlerThread): Deleted.
* Source/WTF/wtf/threads/Signals.h:
(WTF::initializeSignalHandling):
(WTF::disableSignalHandling):
(WTF::registerThreadForMachExceptionHandling):
* Tools/TestWebKitAPI/Tests/WTF/Signals.cpp:
(TEST):

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




More information about the webkit-changes mailing list