tor-browser

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

commit 5b63e963ea7196f6a8c46c375154e2b84f1564ba
parent 00386ce9150a46471be616262c2f06deaeb1d818
Author: Rong "Mantle" Bao <webmaster@csmantle.top>
Date:   Fri, 12 Dec 2025 14:17:57 +0000

Bug 2004879 - [riscv64] Part 2: Rearrange parameters order of MacroAssemblerRiscv64::CalculateOffset. r=jandem

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

Diffstat:
Mjs/src/jit/riscv64/MacroAssembler-riscv64.cpp | 36++++++++++++++++++------------------
Mjs/src/jit/riscv64/MacroAssembler-riscv64.h | 3+--
2 files changed, 19 insertions(+), 20 deletions(-)

diff --git a/js/src/jit/riscv64/MacroAssembler-riscv64.cpp b/js/src/jit/riscv64/MacroAssembler-riscv64.cpp @@ -4819,8 +4819,8 @@ int32_t MacroAssemblerRiscv64::GetOffset(int32_t offset, Label* L, return offset; } -bool MacroAssemblerRiscv64::CalculateOffset(Label* L, int32_t* offset, - OffsetSize bits) { +bool MacroAssemblerRiscv64::CalculateOffset(Label* L, OffsetSize bits, + int32_t* offset) { if (!is_near(L, bits)) return false; *offset = GetOffset(*offset, L, bits); return true; @@ -4855,16 +4855,16 @@ bool MacroAssemblerRiscv64::BranchShortHelper(int32_t offset, Label* L, BlockTrampolinePoolScope block_trampoline_pool(this, 2, 1); switch (cond) { case Always: - if (!CalculateOffset(L, &offset, OffsetSize::kOffset21)) return false; + if (!CalculateOffset(L, OffsetSize::kOffset21, &offset)) return false; Assembler::j(offset); break; case Equal: // rs == rt if (rt.is_reg() && rs == rt.rm()) { - if (!CalculateOffset(L, &offset, OffsetSize::kOffset21)) return false; + if (!CalculateOffset(L, OffsetSize::kOffset21, &offset)) return false; Assembler::j(offset); } else { - if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false; + if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false; Assembler::beq(rs, scratch, offset); } break; @@ -4873,7 +4873,7 @@ bool MacroAssemblerRiscv64::BranchShortHelper(int32_t offset, Label* L, if (rt.is_reg() && rs == rt.rm()) { break; // No code needs to be emitted } else { - if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false; + if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false; Assembler::bne(rs, scratch, offset); } break; @@ -4884,17 +4884,17 @@ bool MacroAssemblerRiscv64::BranchShortHelper(int32_t offset, Label* L, if (rt.is_reg() && rs == rt.rm()) { break; // No code needs to be emitted. } else { - if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false; + if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false; Assembler::bgt(rs, scratch, offset); } break; case GreaterThanOrEqual: // rs >= rt if (rt.is_reg() && rs == rt.rm()) { - if (!CalculateOffset(L, &offset, OffsetSize::kOffset21)) return false; + if (!CalculateOffset(L, OffsetSize::kOffset21, &offset)) return false; Assembler::j(offset); } else { - if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false; + if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false; Assembler::bge(rs, scratch, offset); } break; @@ -4903,17 +4903,17 @@ bool MacroAssemblerRiscv64::BranchShortHelper(int32_t offset, Label* L, if (rt.is_reg() && rs == rt.rm()) { break; // No code needs to be emitted. } else { - if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false; + if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false; Assembler::blt(rs, scratch, offset); } break; case LessThanOrEqual: // rs <= rt if (rt.is_reg() && rs == rt.rm()) { - if (!CalculateOffset(L, &offset, OffsetSize::kOffset21)) return false; + if (!CalculateOffset(L, OffsetSize::kOffset21, &offset)) return false; Assembler::j(offset); } else { - if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false; + if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false; Assembler::ble(rs, scratch, offset); } break; @@ -4924,17 +4924,17 @@ bool MacroAssemblerRiscv64::BranchShortHelper(int32_t offset, Label* L, if (rt.is_reg() && rs == rt.rm()) { break; // No code needs to be emitted. } else { - if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false; + if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false; Assembler::bgtu(rs, scratch, offset); } break; case AboveOrEqual: // rs >= rt if (rt.is_reg() && rs == rt.rm()) { - if (!CalculateOffset(L, &offset, OffsetSize::kOffset21)) return false; + if (!CalculateOffset(L, OffsetSize::kOffset21, &offset)) return false; Assembler::j(offset); } else { - if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false; + if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false; Assembler::bgeu(rs, scratch, offset); } break; @@ -4943,17 +4943,17 @@ bool MacroAssemblerRiscv64::BranchShortHelper(int32_t offset, Label* L, if (rt.is_reg() && rs == rt.rm()) { break; // No code needs to be emitted. } else { - if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false; + if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false; bltu(rs, scratch, offset); } break; case BelowOrEqual: // rs <= rt if (rt.is_reg() && rs == rt.rm()) { - if (!CalculateOffset(L, &offset, OffsetSize::kOffset21)) return false; + if (!CalculateOffset(L, OffsetSize::kOffset21, &offset)) return false; Assembler::j(offset); } else { - if (!CalculateOffset(L, &offset, OffsetSize::kOffset13)) return false; + if (!CalculateOffset(L, OffsetSize::kOffset13, &offset)) return false; Assembler::bleu(rs, scratch, offset); } break; diff --git a/js/src/jit/riscv64/MacroAssembler-riscv64.h b/js/src/jit/riscv64/MacroAssembler-riscv64.h @@ -117,8 +117,7 @@ class MacroAssemblerRiscv64 : public Assembler { nopAlign(alignment); } - // TODO(RISCV) Reorder parameters so out parameters come last. - bool CalculateOffset(Label* L, int32_t* offset, OffsetSize bits); + bool CalculateOffset(Label* L, OffsetSize bits, int32_t* offset); int32_t GetOffset(int32_t offset, Label* L, OffsetSize bits); inline void GenPCRelativeJump(Register rd, int32_t imm32) {