From 0fa41e2adc3e6b247ccb3051672723547f3c918f Mon Sep 17 00:00:00 2001 From: Jiaxun Yang Date: Tue, 12 May 2020 12:40:08 +0800 Subject: Bug 1271968 - IonMonkey: MIPS: Merge MacroAssembler::branchWithCode. Tag: #1542 --- js/src/jit/mips64/MacroAssembler-mips64.cpp | 60 ----------------------------- js/src/jit/mips64/MacroAssembler-mips64.h | 1 - 2 files changed, 61 deletions(-) (limited to 'js/src/jit/mips64') diff --git a/js/src/jit/mips64/MacroAssembler-mips64.cpp b/js/src/jit/mips64/MacroAssembler-mips64.cpp index ee6dd9d0a..79ad8ce4a 100644 --- a/js/src/jit/mips64/MacroAssembler-mips64.cpp +++ b/js/src/jit/mips64/MacroAssembler-mips64.cpp @@ -756,66 +756,6 @@ MacroAssemblerMIPS64::ma_b(Address addr, ImmGCPtr imm, Label* label, Condition c ma_b(SecondScratchReg, imm, label, c, jumpKind); } -void -MacroAssemblerMIPS64::branchWithCode(InstImm code, Label* label, JumpKind jumpKind) -{ - MOZ_ASSERT(code.encode() != InstImm(op_regimm, zero, rt_bgezal, BOffImm16(0)).encode()); - InstImm inst_beq = InstImm(op_beq, zero, zero, BOffImm16(0)); - - if (label->bound()) { - int32_t offset = label->offset() - m_buffer.nextOffset().getOffset(); - - if (BOffImm16::IsInRange(offset)) - jumpKind = ShortJump; - - if (jumpKind == ShortJump) { - MOZ_ASSERT(BOffImm16::IsInRange(offset)); - code.setBOffImm16(BOffImm16(offset)); - writeInst(code.encode()); - as_nop(); - return; - } - - if (code.encode() == inst_beq.encode()) { - // Handle mixed jump - addMixedJump(nextOffset(), ImmPtr((void*)label->offset())); - as_j(JOffImm26(0)); - as_nop(); - return; - } - - // Handle long conditional branch, the target offset is based on self, - // point to next instruction of nop at below. - writeInst(invertBranch(code, BOffImm16(4 * sizeof(uint32_t))).encode()); - as_nop(); - addMixedJump(nextOffset(), ImmPtr((void*)label->offset())); - as_j(JOffImm26(0)); - as_nop(); - return; - } - - // Generate open jump and link it to a label. - - // Second word holds a pointer to the next branch in label's chain. - uint32_t nextInChain = label->used() ? label->offset() : LabelBase::INVALID_OFFSET; - - // Make the whole branch continous in the buffer. - m_buffer.ensureSpace(4 * sizeof(uint32_t)); - - if (jumpKind == ShortJump) { - // Indicate that this is short jump with offset 4. - code.setBOffImm16(BOffImm16(4)); - } - BufferOffset bo = writeInst(code.encode()); - writeInst(nextInChain); - if (!oom()) - label->use(bo.getOffset()); - if (jumpKind != ShortJump && code.encode() != inst_beq.encode()) { - as_nop(); - as_nop(); - } -} - void MacroAssemblerMIPS64::ma_cmp_set(Register rd, Register rs, ImmWord imm, Condition c) { diff --git a/js/src/jit/mips64/MacroAssembler-mips64.h b/js/src/jit/mips64/MacroAssembler-mips64.h index 900ff32ab..027ef4063 100644 --- a/js/src/jit/mips64/MacroAssembler-mips64.h +++ b/js/src/jit/mips64/MacroAssembler-mips64.h @@ -115,7 +115,6 @@ class MacroAssemblerMIPS64 : public MacroAssemblerMIPSShared void ma_pop(Register r); void ma_push(Register r); - void branchWithCode(InstImm code, Label* label, JumpKind jumpKind); // branches when done from within mips-specific code void ma_b(Register lhs, ImmWord imm, Label* l, Condition c, JumpKind jumpKind = MixedJump); void ma_b(Register lhs, Address addr, Label* l, Condition c, JumpKind jumpKind = MixedJump); -- cgit v1.2.3