[webkit-changes] [WebKit/WebKit] c6d7e1: Fix SIMD global get and set in BBQ JIT

EWS noreply at github.com
Mon Mar 6 17:03:10 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: c6d7e1b115e0f3ca2fa5509102eaf21b8369c108
      https://github.com/WebKit/WebKit/commit/c6d7e1b115e0f3ca2fa5509102eaf21b8369c108
  Author: David Degazio <d_degazio at apple.com>
  Date:   2023-03-06 (Mon, 06 Mar 2023)

  Changed paths:
    A JSTests/wasm/stress/simd-global-get.js
    A JSTests/wasm/stress/simd-global-set.js
    M Source/JavaScriptCore/wasm/WasmBBQJIT.cpp

  Log Message:
  -----------
  Fix SIMD global get and set in BBQ JIT
https://bugs.webkit.org/show_bug.cgi?id=253455
rdar://106293111

Reviewed by Yusuke Suzuki and Justin Michaud.

The current implementation for global.get and global.set in BBQ JIT
uses the same helper to emit type-correct load and store instructions
as the rest of the WASM load and store ops. SIMD load ops aren't
included in these instructions though, so whenever we try to get or
set a v128 global with portable binding mode, we hit an
ASSERT_NOT_REACHED.

This patch adds a simple check for v128 globals to both of these
instruction implementations, and emits a loadVector/storeVector
instruction directly instead of calling out to the helper.

* JSTests/wasm/stress/simd-global-get.js: Added.
* JSTests/wasm/stress/simd-global-set.js: Added.
* Source/JavaScriptCore/wasm/WasmBBQJIT.cpp:
(JSC::Wasm::BBQJIT::getGlobal):
(JSC::Wasm::BBQJIT::setGlobal):
(JSC::Wasm::BBQJIT::emitLoad):

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




More information about the webkit-changes mailing list