Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 74091f918bfc6bda006375c335998783b9841418
https://github.com/WebKit/WebKit/commit/74091f918bfc6bda006375c335998783b9841418
Author: Yusuke Suzuki <[email protected]>
Date: 2026-08-06 (Thu, 06 Aug 2026)
Changed paths:
M Source/JavaScriptCore/b3/air/AirAllocateRegistersByGreedy.cpp
M Source/JavaScriptCore/b3/air/AirGenerate.cpp
M Source/JavaScriptCore/b3/air/AirInst.h
M Source/JavaScriptCore/b3/air/AirKind.h
M Source/JavaScriptCore/b3/air/AirOpcode.opcodes
M Source/JavaScriptCore/b3/air/AirPadInterference.cpp
M Source/JavaScriptCore/b3/air/AirReportUsedRegisters.cpp
M Source/JavaScriptCore/b3/air/opcode_generator.rb
M Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp
Log Message:
-----------
[JSC] Add "Padding" Air opcode
https://bugs.webkit.org/show_bug.cgi?id=321187
rdar://184246441
Reviewed by Dan Hecht.
We found that AirReportUsedRegisters phase is taking very long time
because of padInterference, RegLiveness, and entire graph scanning.
But this is necessary only for FTL since we do not need to report used
registers in Wasm OMG. But disabling this caused large performance
regression in JetStream3/richards-wasm because we didn't remove `Nop`
(this phase is also removing Nops) and causing large performance
regression because of emitted `nop` instructions.
But most of Nops are inserted just for Padding in the instruction stream
for liveness analysis and we do not want to actually emit `nop` instructions
except for a few cases. Thus we introduce Padding AirOpcode, which looks
like a Nop, but emits nothing at code generator phase, so purely for padding.
And then we disable reportUsedRegisters for Wasm OMG. We may still want
to have Padding removal scanning (since it encourages simplifyCFG etc., but
so far, we don't see performance improvements from that.
* Source/JavaScriptCore/b3/air/AirAllocateRegistersByGreedy.cpp:
(JSC::B3::Air::Greedy::GreedyAllocator::emitSpillCodeAndEnqueueNewTmps):
* Source/JavaScriptCore/b3/air/AirGenerate.cpp:
(JSC::B3::Air::prepareForGeneration):
* Source/JavaScriptCore/b3/air/AirInst.h:
* Source/JavaScriptCore/b3/air/AirKind.h:
* Source/JavaScriptCore/b3/air/AirOpcode.opcodes:
* Source/JavaScriptCore/b3/air/AirPadInterference.cpp:
(JSC::B3::Air::padInterference):
* Source/JavaScriptCore/b3/air/AirReportUsedRegisters.cpp:
(JSC::B3::Air::reportUsedRegisters):
* Source/JavaScriptCore/b3/air/opcode_generator.rb:
* Source/JavaScriptCore/wasm/WasmOMGIRGenerator.cpp:
(JSC::Wasm::parseAndCompileOMG):
Canonical link: https://commits.webkit.org/318738@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications