[webkit-changes] [WebKit/WebKit] 748f4d: REGRESSION(269608 at main): 32-bit shifts are used to...

Commit Queue noreply at github.com
Wed Oct 25 14:39:10 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 748f4d4620ab6f3e533219ec3d365d648aca2ff0
      https://github.com/WebKit/WebKit/commit/748f4d4620ab6f3e533219ec3d365d648aca2ff0
  Author: Mark Lam <mark.lam at apple.com>
  Date:   2023-10-25 (Wed, 25 Oct 2023)

  Changed paths:
    M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
    M Source/JavaScriptCore/assembler/MacroAssemblerARM64.h
    M Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h
    M Source/JavaScriptCore/assembler/MacroAssemblerRISCV64.h
    M Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h

  Log Message:
  -----------
  REGRESSION(269608 at main): 32-bit shifts are used to zero out upper 32-bits after all.
https://bugs.webkit.org/show_bug.cgi?id=263660
rdar://117475957

Reviewed by Yusuke Suzuki.

In https://commits.webkit.org/269608@main, we added a peephole optimization to reduce shifts
to moves if the shift amount is 0.  However, this is only correct if shift instructions are
never used indirectly to zero out the upper 32-bits of the register.  It turns out that the
JIT backends do rely on 32-bit shifts to zero out the upper 32-bits.

Changes made:
1. Revert 269608 at main 32-bit shift changes.
4. Add some MIPS and RISCV64 files to the Xcode project to make it easier to work with them
   in Xcode.  Also ensure that while they are added to the project, they aren't included as
   part of any build.

* Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:
* Source/JavaScriptCore/assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::lshift32):
(JSC::MacroAssemblerARM64::rotateRight32):
(JSC::MacroAssemblerARM64::rshift32):
(JSC::MacroAssemblerARM64::urshift32):
* Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:
(JSC::MacroAssemblerMIPS::lshift32):
(JSC::MacroAssemblerMIPS::rshift32):
(JSC::MacroAssemblerMIPS::urshift32):
* Source/JavaScriptCore/assembler/MacroAssemblerRISCV64.h:
(JSC::MacroAssemblerRISCV64::lshift32):
(JSC::MacroAssemblerRISCV64::rshift32):
(JSC::MacroAssemblerRISCV64::urshift32):
* Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::lshift32):
(JSC::MacroAssemblerX86Common::rshift32):
(JSC::MacroAssemblerX86Common::urshift32):
(JSC::MacroAssemblerX86Common::rotateRight32):
(JSC::MacroAssemblerX86Common::rotateLeft32):

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




More information about the webkit-changes mailing list