tor-browser

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

commit fc1c8be451e59491c85ec930e1028f142c56379a
parent fb96cba7f3ea28abac1fb671fa23c0452285e70a
Author: André Bargull <andre.bargull@gmail.com>
Date:   Fri, 24 Oct 2025 14:58:55 +0000

Bug 1996086: Use lowerFor{ALU,FPU} when lowering MAbs. r=spidermonkey-reviewers,jandem

Per-architecture lowering for `MAbs` is now no longer needed.

Differential Revision: https://phabricator.services.mozilla.com/D269843

Diffstat:
Mjs/src/jit/LIROps.yaml | 3+++
Mjs/src/jit/Lowering.cpp | 15+++++++--------
Mjs/src/jit/Lowering.h | 1-
Mjs/src/jit/arm/Lowering-arm.cpp | 4----
Mjs/src/jit/arm64/Lowering-arm64.cpp | 4----
Mjs/src/jit/loong64/Lowering-loong64.cpp | 4----
Mjs/src/jit/mips-shared/Lowering-mips-shared.cpp | 4----
Mjs/src/jit/riscv64/Lowering-riscv64.cpp | 4----
Mjs/src/jit/x86-shared/Lowering-x86-shared.cpp | 4----
9 files changed, 10 insertions(+), 33 deletions(-)

diff --git a/js/src/jit/LIROps.yaml b/js/src/jit/LIROps.yaml @@ -1140,6 +1140,7 @@ result_type: WordSized operands: input: WordSized + defer_init: true mir_op: Abs # Absolute value of a double. @@ -1147,12 +1148,14 @@ result_type: WordSized operands: input: WordSized + defer_init: true # Absolute value of a float32. - name: AbsF result_type: WordSized operands: input: WordSized + defer_init: true # Copysign for doubles. - name: CopySignD diff --git a/js/src/jit/Lowering.cpp b/js/src/jit/Lowering.cpp @@ -1985,30 +1985,29 @@ void LIRGenerator::visitMinMaxArray(MMinMaxArray* ins) { define(lir, ins); } -LInstructionHelper<1, 1, 0>* LIRGenerator::allocateAbs(MAbs* ins, - LAllocation input) { +void LIRGenerator::visitAbs(MAbs* ins) { MDefinition* num = ins->input(); MOZ_ASSERT(IsNumberType(num->type())); - LInstructionHelper<1, 1, 0>* lir; switch (num->type()) { - case MIRType::Int32: - lir = new (alloc()) LAbsI(input); + case MIRType::Int32: { + auto* lir = new (alloc()) LAbsI; // needed to handle abs(INT32_MIN) if (ins->fallible()) { assignSnapshot(lir, ins->bailoutKind()); } + lowerForALU(lir, ins, num); break; + } case MIRType::Float32: - lir = new (alloc()) LAbsF(input); + lowerForFPU(new (alloc()) LAbsF, ins, num); break; case MIRType::Double: - lir = new (alloc()) LAbsD(input); + lowerForFPU(new (alloc()) LAbsD, ins, num); break; default: MOZ_CRASH(); } - return lir; } void LIRGenerator::visitClz(MClz* ins) { diff --git a/js/src/jit/Lowering.h b/js/src/jit/Lowering.h @@ -61,7 +61,6 @@ class LIRGenerator final : public LIRGeneratorSpecific { void lowerBitOp(JSOp op, MBinaryInstruction* ins); void lowerShiftOp(JSOp op, MShiftInstruction* ins); - LInstructionHelper<1, 1, 0>* allocateAbs(MAbs* ins, LAllocation input); bool definePhis(); template <typename T> diff --git a/js/src/jit/arm/Lowering-arm.cpp b/js/src/jit/arm/Lowering-arm.cpp @@ -355,10 +355,6 @@ void LIRGeneratorARM::lowerDivI(MDiv* div) { defineReturn(lir, div); } -void LIRGenerator::visitAbs(MAbs* ins) { - define(allocateAbs(ins, useRegisterAtStart(ins->input())), ins); -} - void LIRGeneratorARM::lowerMulI(MMul* mul, MDefinition* lhs, MDefinition* rhs) { LMulI* lir = new (alloc()) LMulI; if (mul->fallible()) { diff --git a/js/src/jit/arm64/Lowering-arm64.cpp b/js/src/jit/arm64/Lowering-arm64.cpp @@ -397,10 +397,6 @@ void LIRGeneratorARM64::lowerWasmCompareAndSelect(MWasmSelect* ins, define(lir, ins); } -void LIRGenerator::visitAbs(MAbs* ins) { - define(allocateAbs(ins, useRegisterAtStart(ins->input())), ins); -} - LTableSwitch* LIRGeneratorARM64::newLTableSwitch(const LAllocation& in, const LDefinition& inputCopy) { return new (alloc()) LTableSwitch(in, inputCopy, temp()); diff --git a/js/src/jit/loong64/Lowering-loong64.cpp b/js/src/jit/loong64/Lowering-loong64.cpp @@ -499,10 +499,6 @@ void LIRGenerator::visitUnbox(MUnbox* unbox) { define(lir, unbox); } -void LIRGenerator::visitAbs(MAbs* ins) { - define(allocateAbs(ins, useRegisterAtStart(ins->input())), ins); -} - void LIRGenerator::visitCopySign(MCopySign* ins) { MDefinition* lhs = ins->lhs(); MDefinition* rhs = ins->rhs(); diff --git a/js/src/jit/mips-shared/Lowering-mips-shared.cpp b/js/src/jit/mips-shared/Lowering-mips-shared.cpp @@ -172,10 +172,6 @@ void LIRGeneratorMIPSShared::lowerDivI(MDiv* div) { define(lir, div); } -void LIRGenerator::visitAbs(MAbs* ins) { - define(allocateAbs(ins, useRegisterAtStart(ins->input())), ins); -} - void LIRGeneratorMIPSShared::lowerMulI(MMul* mul, MDefinition* lhs, MDefinition* rhs) { LMulI* lir = new (alloc()) LMulI; diff --git a/js/src/jit/riscv64/Lowering-riscv64.cpp b/js/src/jit/riscv64/Lowering-riscv64.cpp @@ -498,10 +498,6 @@ void LIRGenerator::visitUnbox(MUnbox* unbox) { define(lir, unbox); } -void LIRGenerator::visitAbs(MAbs* ins) { - define(allocateAbs(ins, useRegisterAtStart(ins->input())), ins); -} - void LIRGenerator::visitCopySign(MCopySign* ins) { MDefinition* lhs = ins->lhs(); MDefinition* rhs = ins->rhs(); diff --git a/js/src/jit/x86-shared/Lowering-x86-shared.cpp b/js/src/jit/x86-shared/Lowering-x86-shared.cpp @@ -174,10 +174,6 @@ void LIRGeneratorX86Shared::lowerForFPU(LInstructionHelper<1, 2, 0>* ins, } } -void LIRGenerator::visitAbs(MAbs* ins) { - defineReuseInput(allocateAbs(ins, useRegisterAtStart(ins->input())), ins, 0); -} - void LIRGeneratorX86Shared::lowerMulI(MMul* mul, MDefinition* lhs, MDefinition* rhs) { // Note: If we need a negative zero check, lhs is used twice.