[webkit-changes] [WebKit/WebKit] 9a3d98: Reland Atomics in IPInt

Keith Miller noreply at github.com
Tue Sep 26 12:29:40 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 9a3d986518bcc657eebf7f246604f4b0be78a79e
      https://github.com/WebKit/WebKit/commit/9a3d986518bcc657eebf7f246604f4b0be78a79e
  Author: Keith Miller <keith_miller at apple.com>
  Date:   2023-09-26 (Tue, 26 Sep 2023)

  Changed paths:
    A JSTests/wasm/stress/non-canonical-extended-ops.js
    M Source/JavaScriptCore/llint/InPlaceInterpreter.asm
    M Source/JavaScriptCore/llint/InPlaceInterpreter.cpp
    M Source/JavaScriptCore/llint/InPlaceInterpreter.h
    M Source/JavaScriptCore/runtime/OptionsList.h
    M Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.h
    M Source/JavaScriptCore/wasm/WasmFunctionParser.h
    M Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmOperationsInlines.h
    M Source/JavaScriptCore/wasm/WasmSlowPaths.cpp
    M Source/JavaScriptCore/wasm/WasmSlowPaths.h

  Log Message:
  -----------
  Reland Atomics in IPInt
https://bugs.webkit.org/show_bug.cgi?id=262118

Reviewed by Yusuke Suzuki.

This is a fixed patch for 268300 at main and 268252 at main. Before there was an issue that
we were using the `unimplementedInstruction` macro instead of the `reservedOpcode`
macro for the holes in the Atomic instruction set. The `unimplementedInstruction`
macro emits a global label, which on iOS would get stripped. I think this is happening
as the definition of the label is not in the same translation unit as the declaration,
which has the attribute, so the attribute doesn't get merged into the definition. Right
now it seems the only thing preserving the IPInt labels is the `IPInt::initialize()` function
and that function did not have any references to the Atomic intruction gaps.

* JSTests/wasm/stress/non-canonical-extended-ops.js: Added.
(instance):
* Source/JavaScriptCore/llint/InPlaceInterpreter.asm:
* Source/JavaScriptCore/llint/InPlaceInterpreter.cpp:
(JSC::IPInt::initialize):
* Source/JavaScriptCore/llint/InPlaceInterpreter.h:
* Source/JavaScriptCore/runtime/OptionsList.h:
* Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.cpp:
(JSC::Wasm::FunctionIPIntMetadataGenerator::addLength):
* Source/JavaScriptCore/wasm/WasmFunctionIPIntMetadataGenerator.h:
* Source/JavaScriptCore/wasm/WasmFunctionParser.h:
(JSC::Wasm::FunctionParser<Context>::truncSaturated):
* Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp:
(JSC::Wasm::IPIntGenerator::addMemoryFill):
(JSC::Wasm::IPIntGenerator::addMemoryCopy):
(JSC::Wasm::IPIntGenerator::atomicLoad):
(JSC::Wasm::IPIntGenerator::atomicStore):
(JSC::Wasm::IPIntGenerator::atomicBinaryRMW):
(JSC::Wasm::IPIntGenerator::atomicCompareExchange):
(JSC::Wasm::IPIntGenerator::atomicWait):
(JSC::Wasm::IPIntGenerator::atomicNotify):
(JSC::Wasm::IPIntGenerator::atomicFence):
(JSC::Wasm::IPIntGenerator::truncSaturated):
* Source/JavaScriptCore/wasm/WasmOperationsInlines.h:
(JSC::Wasm::memoryAtomicWait32):
(JSC::Wasm::memoryAtomicWait64):
* Source/JavaScriptCore/wasm/WasmSlowPaths.cpp:
(JSC::LLInt::WASM_IPINT_EXTERN_CPP_DECL):
* Source/JavaScriptCore/wasm/WasmSlowPaths.h:

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




More information about the webkit-changes mailing list