[webkit-changes] [WebKit/WebKit] aa3a64: [JSC] Wasm should use WaiterListManager for atomics

Yusuke Suzuki noreply at github.com
Sat Dec 24 12:45:24 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: aa3a64460f0a577d25eb723c77780f067085aa58
      https://github.com/WebKit/WebKit/commit/aa3a64460f0a577d25eb723c77780f067085aa58
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2022-12-24 (Sat, 24 Dec 2022)

  Changed paths:
    M Source/JavaScriptCore/runtime/AtomicsObject.cpp
    M Source/JavaScriptCore/runtime/WaiterListManager.cpp
    M Source/JavaScriptCore/runtime/WaiterListManager.h
    M Source/JavaScriptCore/wasm/WasmOperations.cpp
    M Source/JavaScriptCore/wasm/WasmOperations.h

  Log Message:
  -----------
  [JSC] Wasm should use WaiterListManager for atomics
https://bugs.webkit.org/show_bug.cgi?id=249864
rdar://103683992

Reviewed by Mark Lam.

While JS Atomics' wait / notify is changed to use WaiterListManager, Wasm's atomics
is not changed correctly, which causes a bug that Wasm and JS cannot interact each
other with atomics.

1. To make WaiterListManager usable for Wasm, we change sync part of wait. We add
   waitSync methods, which does not touch JS related concepts. And JS Atomics.wait
   and Wasm wait are rewritten to use it.
2. Wasm notify also uses WaiterListManager's notifyWaiter.

* Source/JavaScriptCore/runtime/AtomicsObject.cpp:
(JSC::atomicsWaitImpl):
* Source/JavaScriptCore/runtime/WaiterListManager.cpp:
(JSC::WaiterListManager::waitSyncImpl):
(JSC::WaiterListManager::waitAsyncImpl):
(JSC::WaiterListManager::waitAsync):
(JSC::WaiterListManager::waitSync):
(JSC::WaiterListManager::waitImpl): Deleted.
(JSC::WaiterListManager::wait): Deleted.
* Source/JavaScriptCore/runtime/WaiterListManager.h:
* Source/JavaScriptCore/wasm/WasmOperations.cpp:
(JSC::Wasm::wait):
(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):
* Source/JavaScriptCore/wasm/WasmOperations.h:

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




More information about the webkit-changes mailing list