Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 92e8b1300f34bcb5dcc7c17ebb1b8c49a39633d2
      
https://github.com/WebKit/WebKit/commit/92e8b1300f34bcb5dcc7c17ebb1b8c49a39633d2
  Author: Asumu Takikawa <as...@igalia.com>
  Date:   2023-12-09 (Sat, 09 Dec 2023)

  Changed paths:
    A JSTests/wasm/gc-spec-tests/br_on_cast.wast.js
    A JSTests/wasm/gc-spec-tests/br_on_cast_fail.wast.js
    A JSTests/wasm/gc/br_on_cast.js
    M JSTests/wasm/wasm.json
    M Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmBBQJIT.cpp
    M Source/JavaScriptCore/wasm/WasmConstExprGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmFunctionParser.h
    M Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmLLIntGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmOperations.cpp
    M Source/JavaScriptCore/wasm/WasmOperations.h
    M Source/JavaScriptCore/wasm/WasmSlowPaths.cpp
    M Source/JavaScriptCore/wasm/WasmTypeDefinition.cpp
    M Source/JavaScriptCore/wasm/WasmTypeDefinition.h
    M Source/JavaScriptCore/wasm/wasm.json

  Log Message:
  -----------
  [Wasm-GC] Implement br_on_cast and br_on_cast_fail
https://bugs.webkit.org/show_bug.cgi?id=254694

Reviewed by Justin Michaud.

Implements the br_on_cast and br_on_cast_fail instructions. These instructions
are compiled via a new addBranchCast method in the Wasm generators.

To accommodate the fail case, the emit functions and operations for RefTest are
given flags whether to negate the operation.

This patch also fixes some missing subtype checks for block parameters.

* JSTests/wasm/gc-spec-tests/br_on_cast.wast.js: Added.
* JSTests/wasm/gc-spec-tests/br_on_cast_fail.wast.js: Added.
* JSTests/wasm/gc/br_on_cast.js: Added.
(testBrOnCastValidation):
* JSTests/wasm/wasm.json:
* Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::addRefTest):
(JSC::Wasm::B3IRGenerator::addRefCast):
(JSC::Wasm::B3IRGenerator::emitRefTestOrCast):
(JSC::Wasm::B3IRGenerator::addBranchCast):
* Source/JavaScriptCore/wasm/WasmBBQJIT.cpp:
(JSC::Wasm::BBQJIT::addRefTest):
(JSC::Wasm::BBQJIT::addBranchNull):
(JSC::Wasm::BBQJIT::addBranchCast):
* Source/JavaScriptCore/wasm/WasmConstExprGenerator.cpp:
* Source/JavaScriptCore/wasm/WasmFunctionParser.h:
(JSC::Wasm::FunctionParser<Context>::parseExpression):
* Source/JavaScriptCore/wasm/WasmIPIntGenerator.cpp:
(JSC::Wasm::IPIntGenerator::addRefTest):
(JSC::Wasm::IPIntGenerator::addBranchCast):
* Source/JavaScriptCore/wasm/WasmLLIntGenerator.cpp:
(JSC::Wasm::LLIntGenerator::addBranchCast):
(JSC::Wasm::LLIntGenerator::addRefTest):
* Source/JavaScriptCore/wasm/WasmOperations.cpp:
(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):
* Source/JavaScriptCore/wasm/WasmOperations.h:
* Source/JavaScriptCore/wasm/WasmSlowPaths.cpp:
(JSC::LLInt::WASM_SLOW_PATH_DECL):
* Source/JavaScriptCore/wasm/WasmTypeDefinition.cpp:
(JSC::Wasm::TypeInformation::signatureForLLIntBuiltin):
(JSC::Wasm::TypeInformation::TypeInformation):
* Source/JavaScriptCore/wasm/WasmTypeDefinition.h:
* Source/JavaScriptCore/wasm/wasm.json:

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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to