Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: aa3a64460f0a577d25eb723c77780f067085aa58
      
https://github.com/WebKit/WebKit/commit/aa3a64460f0a577d25eb723c77780f067085aa58
  Author: Yusuke Suzuki <[email protected]>
  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


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to