Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ea11204f2caf684840933f964b24f376ba7524db
      
https://github.com/WebKit/WebKit/commit/ea11204f2caf684840933f964b24f376ba7524db
  Author: Yusuke Suzuki <[email protected]>
  Date:   2026-01-22 (Thu, 22 Jan 2026)

  Changed paths:
    M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
    M Source/JavaScriptCore/Sources.txt
    M Source/JavaScriptCore/b3/B3Kind.h
    M Source/JavaScriptCore/b3/B3LowerMacros.cpp
    M Source/JavaScriptCore/b3/B3Opcode.h
    M Source/JavaScriptCore/b3/B3ReduceStrength.cpp
    M Source/JavaScriptCore/b3/B3Validate.cpp
    M Source/JavaScriptCore/b3/B3Value.cpp
    M Source/JavaScriptCore/b3/B3Value.h
    M Source/JavaScriptCore/b3/B3ValueInlines.h
    M Source/JavaScriptCore/b3/B3ValueKey.cpp
    M Source/JavaScriptCore/b3/B3ValueKey.h
    M Source/JavaScriptCore/b3/B3ValueKeyInlines.h
    A Source/JavaScriptCore/b3/B3WasmRefTypeCheckValue.cpp
    A Source/JavaScriptCore/b3/B3WasmRefTypeCheckValue.h
    M Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp
    M Source/JavaScriptCore/wasm/WasmTypeDefinition.cpp
    M Source/JavaScriptCore/wasm/WasmTypeDefinition.h

  Log Message:
  -----------
  [JSC] Introduce B3 WasmRefCast / WasmRefTest values
https://bugs.webkit.org/show_bug.cgi?id=305912
rdar://168566739

Reviewed by Keith Miller.

We introduce WasmRefCast and WasmRefTest B3 values. This is another
high-level B3 nodes for WasmGC. This enables data-flow analysis for wasm
GC operations in B3 finally.
The generated code is literally just moved from OMG IR generator to
B3LowerMacros. We introduce ValueKey Value::key CSE support for these
values.

Based on this high-level semantics, we start using it in ReduceStrength.
We make WasmStructGet, WasmStructSet can remove trapping bits based on
input's WasmRefCast. And WasmRefCast can make convert itself to non-nullable
based on subsequent values in the same basic block.

* Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
* Source/JavaScriptCore/Sources.txt:
* Source/JavaScriptCore/b3/B3Kind.h:
(JSC::B3::Kind::hasTraps const):
* Source/JavaScriptCore/b3/B3LowerMacros.cpp:
* Source/JavaScriptCore/b3/B3Opcode.h:
* Source/JavaScriptCore/b3/B3ReduceStrength.cpp:
* Source/JavaScriptCore/b3/B3Validate.cpp:
* Source/JavaScriptCore/b3/B3Value.cpp:
(JSC::B3::Value::effects const):
(JSC::B3::Value::key const):
* Source/JavaScriptCore/b3/B3Value.h:
* Source/JavaScriptCore/b3/B3ValueInlines.h:
* Source/JavaScriptCore/b3/B3ValueKey.cpp:
(JSC::B3::ValueKey::materialize const):
* Source/JavaScriptCore/b3/B3ValueKey.h:
* Source/JavaScriptCore/b3/B3ValueKeyInlines.h:
(JSC::B3::ValueKey::ValueKey):
* Source/JavaScriptCore/b3/B3WasmRefTypeCheckValue.cpp: Added.
* Source/JavaScriptCore/b3/B3WasmRefTypeCheckValue.h: Added.
* Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp:
(JSC::Wasm::OMGIRGenerator::emitRefTestOrCast):
(JSC::Wasm::OMGIRGenerator::emitCheckOrBranchForCast): Deleted.
* Source/JavaScriptCore/wasm/WasmTypeDefinition.cpp:
(JSC::Wasm::RTT::RTT):
(JSC::Wasm::RTT::tryCreate):
(JSC::Wasm::TypeInformation::createCanonicalRTTForType):
* Source/JavaScriptCore/wasm/WasmTypeDefinition.h:

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to