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

Reply via email to