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