[webkit-changes] [WebKit/WebKit] ec3927: [JSC] Optimize DFG ArithMul

Yusuke Suzuki noreply at github.com
Mon Jun 12 18:46:41 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: ec3927dec16c983d02600627fa81d51be322984b
      https://github.com/WebKit/WebKit/commit/ec3927dec16c983d02600627fa81d51be322984b
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2023-06-12 (Mon, 12 Jun 2023)

  Changed paths:
    M Source/JavaScriptCore/assembler/MacroAssemblerARM64.h
    M Source/JavaScriptCore/b3/B3LowerMacros.cpp
    M Source/JavaScriptCore/b3/B3LowerToAir.cpp
    M Source/JavaScriptCore/b3/air/AirOpcode.opcodes
    M Source/JavaScriptCore/dfg/DFGBackwardsPropagationPhase.cpp

  Log Message:
  -----------
  [JSC] Optimize DFG ArithMul
https://bugs.webkit.org/show_bug.cgi?id=257973
rdar://110657502

Reviewed by Justin Michaud.

This patch optimizes DFG ArithMul more.

1. ARM64 branchMul32 and branchMul64 were suboptimal. This patch rewrites the assembler generated code.
   And we drop B3's ARM64 CheckMul macro-lowering since BranchMul32 generated code is now better.
2. Extend isNotNegZero not to cause negative zero check unnecessarily. Bit ops never generates -0 (If it is numbers,
   then it is always non -0. If it is BigInt, anyway, it is not -0).

* Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::branchMul32):
(JSC::MacroAssemblerARM64::branchMul64):
* Source/JavaScriptCore/b3/B3LowerMacros.cpp:
* Source/JavaScriptCore/b3/B3LowerToAir.cpp:
* Source/JavaScriptCore/b3/air/AirOpcode.opcodes:
* Source/JavaScriptCore/dfg/DFGBackwardsPropagationPhase.cpp:
(JSC::DFG::BackwardsPropagationPhase::isNotNegZero):

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




More information about the webkit-changes mailing list