tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 8f1d9cedcf12784793e32d0b9d560faa42f1aec9
parent 4783bf04e3687d8faf75eb7d227d9bfde9b366ce
Author: Cristina Horotan <chorotan@mozilla.com>
Date:   Tue,  2 Dec 2025 21:16:29 +0200

Revert "Bug 2002881: Support non-power-of-two EntrySize in lookupMFBT r=jandem" for causing bustages on MacroAssembler-arm-inl.h

This reverts commit f7abca3366ee73d9bad3dbcfb93571a9b1fa447f.

Diffstat:
Mjs/src/jit/MacroAssembler.cpp | 17++++++-----------
Mjs/src/jit/MacroAssembler.h | 2+-
Mjs/src/jit/arm/MacroAssembler-arm-inl.h | 6------
Mjs/src/jit/arm64/MacroAssembler-arm64-inl.h | 8--------
Mjs/src/jit/loong64/MacroAssembler-loong64-inl.h | 8--------
Mjs/src/jit/mips64/MacroAssembler-mips64-inl.h | 8--------
Mjs/src/jit/riscv64/MacroAssembler-riscv64-inl.h | 7-------
Mjs/src/jit/wasm32/MacroAssembler-wasm32-inl.h | 1-
8 files changed, 7 insertions(+), 50 deletions(-)

diff --git a/js/src/jit/MacroAssembler.cpp b/js/src/jit/MacroAssembler.cpp @@ -10702,17 +10702,12 @@ void MacroAssembler::checkForMatchMFBT(Register hashTable, Register hashIndex, addPtr(capacityOffset, entries); // Load entries[hashIndex] into |scratch| - size_t EntrySize = sizeof(typename Table::Entry); - if (mozilla::IsPowerOfTwo(EntrySize)) { - uint32_t shift = mozilla::FloorLog2(EntrySize); - lshiftPtr(Imm32(shift), hashIndex, scratch); - } else { - // Note: this is provided as a fallback. Faster paths are possible for many - // non-power-of-two constants. If you add a use of this code that requires a - // non-power-of-two EntrySize, consider extending this code. - move32(hashIndex, scratch); - mulPtr(ImmWord(EntrySize), scratch); - } + // TODO: support non-power-of-2 entry sizes + constexpr size_t EntrySize = sizeof(typename Table::Entry); + static_assert(mozilla::IsPowerOfTwo(EntrySize)); + uint32_t shift = mozilla::FloorLog2(EntrySize); + lshiftPtr(Imm32(shift), hashIndex, scratch); + computeEffectiveAddress(BaseIndex(entries, scratch, Scale::TimesOne), scratch); } diff --git a/js/src/jit/MacroAssembler.h b/js/src/jit/MacroAssembler.h @@ -1177,7 +1177,7 @@ class MacroAssembler : public MacroAssemblerSpecific { Register dest) PER_ARCH; inline void mulPtr(Register rhs, Register srcDest) PER_ARCH; - inline void mulPtr(ImmWord rhs, Register srcDest) PER_ARCH; + inline void mulPtr(ImmWord rhs, Register srcDest) DEFINED_ON(x86, x64); inline void mul64(const Operand& src, const Register64& dest) DEFINED_ON(x64); inline void mul64(const Operand& src, const Register64& dest, diff --git a/js/src/jit/arm/MacroAssembler-arm-inl.h b/js/src/jit/arm/MacroAssembler-arm-inl.h @@ -483,12 +483,6 @@ void MacroAssembler::mulPtr(Register rhs, Register srcDest) { as_mul(srcDest, srcDest, rhs); } -void MacroAssembler::mulPtr(ImmWord rhs, Register srcDest) { - ScratchRegisterScope scratch(*this); - movePtr(rhs, scratch); - mulPtr(scratch, srcDest) -} - void MacroAssembler::mul64(Imm64 imm, const Register64& dest) { // LOW32 = LOW(LOW(dest) * LOW(imm)); // HIGH32 = LOW(HIGH(dest) * LOW(imm)) [multiply imm into upper bits] diff --git a/js/src/jit/arm64/MacroAssembler-arm64-inl.h b/js/src/jit/arm64/MacroAssembler-arm64-inl.h @@ -512,14 +512,6 @@ void MacroAssembler::mulPtr(Register rhs, Register srcDest) { Mul(ARMRegister(srcDest, 64), ARMRegister(srcDest, 64), ARMRegister(rhs, 64)); } -void MacroAssembler::mulPtr(ImmWord rhs, Register srcDest) { - vixl::UseScratchRegisterScope temps(this); - const ARMRegister scratch64 = temps.AcquireX(); - MOZ_ASSERT(srcDest != scratch64.asUnsized()); - mov(rhs, scratch64.asUnsized()); - mulPtr(scratch64.asUnsized(), srcDest); -} - void MacroAssembler::mul64(Imm64 imm, const Register64& dest) { vixl::UseScratchRegisterScope temps(this); const ARMRegister scratch64 = temps.AcquireX(); diff --git a/js/src/jit/loong64/MacroAssembler-loong64-inl.h b/js/src/jit/loong64/MacroAssembler-loong64-inl.h @@ -466,14 +466,6 @@ void MacroAssembler::mulPtr(Register rhs, Register srcDest) { as_mul_d(srcDest, srcDest, rhs); } -void MacroAssembler::mulPtr(ImmWord rhs, Register srcDest) { - UseScratchRegisterScope temps(asMasm()); - Register scratch = temps.Acquire(); - MOZ_ASSERT(srcDest != scratch); - mov(rhs, scratch); - mulPtr(scratch, srcDest); -} - void MacroAssembler::mulBy3(Register src, Register dest) { UseScratchRegisterScope temps(asMasm()); Register scratch = temps.Acquire(); diff --git a/js/src/jit/mips64/MacroAssembler-mips64-inl.h b/js/src/jit/mips64/MacroAssembler-mips64-inl.h @@ -241,14 +241,6 @@ void MacroAssembler::mulPtr(Register rhs, Register srcDest) { #endif } -void MacroAssembler::mulPtr(ImmWord rhs, Register srcDest) { - UseScratchRegisterScope temps(*this); - Register scratch = temps.Acquire(); - MOZ_ASSERT(srcDest != scratch); - mov(rhs, scratch); - mulPtr(scratch, srcDest); -} - void MacroAssembler::mul64(Imm64 imm, const Register64& dest) { UseScratchRegisterScope temps(*this); Register scratch = temps.Acquire(); diff --git a/js/src/jit/riscv64/MacroAssembler-riscv64-inl.h b/js/src/jit/riscv64/MacroAssembler-riscv64-inl.h @@ -1833,13 +1833,6 @@ void MacroAssembler::mulFloat32(FloatRegister src, FloatRegister dest) { void MacroAssembler::mulPtr(Register rhs, Register srcDest) { mul(srcDest, srcDest, rhs); } -void MacroAssembler::mulPtr(ImmWord rhs, Register srcDest) { - UseScratchRegisterScope temps(this); - Register scratch = temps.Acquire(); - MOZ_ASSERT(srcDest != scratch); - mov(rhs, scratch); - mulPtr(scratch, srcDest); -} void MacroAssembler::negateDouble(FloatRegister reg) { fneg_d(reg, reg); } diff --git a/js/src/jit/wasm32/MacroAssembler-wasm32-inl.h b/js/src/jit/wasm32/MacroAssembler-wasm32-inl.h @@ -136,7 +136,6 @@ void MacroAssembler::sub64(Register64 src, Register64 dest) { MOZ_CRASH(); } void MacroAssembler::sub64(Imm64 imm, Register64 dest) { MOZ_CRASH(); } void MacroAssembler::mulPtr(Register rhs, Register srcDest) { MOZ_CRASH(); } -void MacroAssembler::mulPtr(ImmWord rhs, Register srcDest) { MOZ_CRASH(); } void MacroAssembler::mul64(Imm64 imm, const Register64& dest) { MOZ_CRASH(); }