summaryrefslogtreecommitdiffstats
path: root/js/src/jit/arm/MacroAssembler-arm.cpp
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-08 15:18:54 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-08 15:18:54 +0000
commita5f28e22cc28ca53d092f6545bc924ee43a8bbe4 (patch)
tree7e02d01734d97de08bdeed66d2d5185f8e4f0a61 /js/src/jit/arm/MacroAssembler-arm.cpp
parentReleasing progress-linux version 115.8.0esr-1~deb12u1progress7u1. (diff)
downloadfirefox-esr-a5f28e22cc28ca53d092f6545bc924ee43a8bbe4.tar.xz
firefox-esr-a5f28e22cc28ca53d092f6545bc924ee43a8bbe4.zip
Merging upstream version 115.9.0esr.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/jit/arm/MacroAssembler-arm.cpp')
-rw-r--r--js/src/jit/arm/MacroAssembler-arm.cpp24
1 files changed, 14 insertions, 10 deletions
diff --git a/js/src/jit/arm/MacroAssembler-arm.cpp b/js/src/jit/arm/MacroAssembler-arm.cpp
index fe4f36ab26..b031461751 100644
--- a/js/src/jit/arm/MacroAssembler-arm.cpp
+++ b/js/src/jit/arm/MacroAssembler-arm.cpp
@@ -5843,11 +5843,13 @@ inline void EmitRemainderOrQuotient(bool isRemainder, MacroAssembler& masm,
masm.quotient32(rhs, lhsOutput, isUnsigned);
}
} else {
- // Ensure that the output registers are saved and restored properly,
- MOZ_ASSERT(volatileLiveRegs.has(ReturnRegVal0));
- MOZ_ASSERT(volatileLiveRegs.has(ReturnRegVal1));
+ // Ensure that the output registers are saved and restored properly.
+ LiveRegisterSet liveRegs = volatileLiveRegs;
+ liveRegs.addUnchecked(ReturnRegVal0);
+ liveRegs.addUnchecked(ReturnRegVal1);
+
+ masm.PushRegsInMask(liveRegs);
- masm.PushRegsInMask(volatileLiveRegs);
using Fn = int64_t (*)(int, int);
{
ScratchRegisterScope scratch(masm);
@@ -5870,7 +5872,7 @@ inline void EmitRemainderOrQuotient(bool isRemainder, MacroAssembler& masm,
LiveRegisterSet ignore;
ignore.add(lhsOutput);
- masm.PopRegsInMaskIgnore(volatileLiveRegs, ignore);
+ masm.PopRegsInMaskIgnore(liveRegs, ignore);
}
}
@@ -5899,10 +5901,12 @@ void MacroAssembler::flexibleDivMod32(Register rhs, Register lhsOutput,
remainder32(rhs, remOutput, isUnsigned);
quotient32(rhs, lhsOutput, isUnsigned);
} else {
- // Ensure that the output registers are saved and restored properly,
- MOZ_ASSERT(volatileLiveRegs.has(ReturnRegVal0));
- MOZ_ASSERT(volatileLiveRegs.has(ReturnRegVal1));
- PushRegsInMask(volatileLiveRegs);
+ // Ensure that the output registers are saved and restored properly.
+ LiveRegisterSet liveRegs = volatileLiveRegs;
+ liveRegs.addUnchecked(ReturnRegVal0);
+ liveRegs.addUnchecked(ReturnRegVal1);
+
+ PushRegsInMask(liveRegs);
using Fn = int64_t (*)(int, int);
{
@@ -5923,7 +5927,7 @@ void MacroAssembler::flexibleDivMod32(Register rhs, Register lhsOutput,
LiveRegisterSet ignore;
ignore.add(remOutput);
ignore.add(lhsOutput);
- PopRegsInMaskIgnore(volatileLiveRegs, ignore);
+ PopRegsInMaskIgnore(liveRegs, ignore);
}
}