summaryrefslogtreecommitdiffstats
path: root/js/src/jit/mips-shared/MacroAssembler-mips-shared.cpp
diff options
context:
space:
mode:
authorJiaxun Yang <jiaxun.yang@flygoat.com>2020-05-12 12:40:07 +0800
committerJiaxun Yang <jiaxun.yang@flygoat.com>2020-05-14 16:31:56 +0800
commita141af108f5adaa443ca2144513c2e051be7b844 (patch)
treef729ed33c404b5b9603c0302d5c634b0e9882df8 /js/src/jit/mips-shared/MacroAssembler-mips-shared.cpp
parent22a4c154bbfb2b293c15be4fad8fe55a668c90ec (diff)
downloadUXP-a141af108f5adaa443ca2144513c2e051be7b844.tar
UXP-a141af108f5adaa443ca2144513c2e051be7b844.tar.gz
UXP-a141af108f5adaa443ca2144513c2e051be7b844.tar.lz
UXP-a141af108f5adaa443ca2144513c2e051be7b844.tar.xz
UXP-a141af108f5adaa443ca2144513c2e051be7b844.zip
Bug 1271968 - IonMonkey: MIPS: Replace long jumps by mixed jumps.
Tag: #1542
Diffstat (limited to 'js/src/jit/mips-shared/MacroAssembler-mips-shared.cpp')
-rw-r--r--js/src/jit/mips-shared/MacroAssembler-mips-shared.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/js/src/jit/mips-shared/MacroAssembler-mips-shared.cpp b/js/src/jit/mips-shared/MacroAssembler-mips-shared.cpp
index 658cafd36..a8b53e67c 100644
--- a/js/src/jit/mips-shared/MacroAssembler-mips-shared.cpp
+++ b/js/src/jit/mips-shared/MacroAssembler-mips-shared.cpp
@@ -959,6 +959,22 @@ MacroAssemblerMIPSShared::compareFloatingPoint(FloatFormat fmt, FloatRegister lh
}
void
+MacroAssemblerMIPSShared::GenerateMixedJumps()
+{
+ // Generate all mixed jumps.
+ for (size_t i = 0; i < numMixedJumps(); i++) {
+ MixedJumpPatch& mjp = mixedJump(i);
+ if (MixedJumpPatch::NONE == mjp.kind && uintptr_t(mjp.target) <= size())
+ continue;
+ BufferOffset bo = m_buffer.nextOffset();
+ asMasm().ma_liPatchable(ScratchRegister, ImmWord(0));
+ as_jr(ScratchRegister);
+ as_nop();
+ mjp.mid = bo;
+ }
+}
+
+void
MacroAssemblerMIPSShared::ma_cmp_set_double(Register dest, FloatRegister lhs, FloatRegister rhs,
DoubleCondition c)
{
@@ -1572,7 +1588,7 @@ MacroAssembler::call(Register reg)
CodeOffset
MacroAssembler::call(Label* label)
{
- ma_bal(label);
+ ma_jal(label);
return CodeOffset(currentOffset());
}