diff --git a/js/src/jit/mips64/Assembler-mips64.cpp b/js/src/jit/mips64/Assembler-mips64.cpp index f4145b3c1e86688224f5811e73e0e0364209fd04..b89926addb7bcf6f65e58be530fb2edb2ed6e38a 100644 --- a/js/src/jit/mips64/Assembler-mips64.cpp +++ b/js/src/jit/mips64/Assembler-mips64.cpp @@ -274,21 +274,22 @@ Assembler::bind(InstImm* inst, uintptr_t branch, uintptr_t target) } if (BOffImm16::IsInRange(offset)) { - inst[0].setBOffImm16(BOffImm16(offset)); - inst[1].makeNop(); - +#ifdef _MIPS_ARCH_LOONGSON3A // Don't skip trailing nops can imporve performance // on Loongson3 platform. -#ifndef _MIPS_ARCH_LOONGSON3A - bool conditional = (inst[0].encode() != inst_bgezal.encode() && - inst[0].encode() != inst_beq.encode()); + bool skipNops = false; +#else + bool skipNops = (inst[0].encode() != inst_bgezal.encode() && + inst[0].encode() != inst_beq.encode()); +#endif - // Skip the trailing nops in conditional branches. - if (conditional) { + inst[0].setBOffImm16(BOffImm16(offset)); + inst[1].makeNop(); + + if (skipNops) { inst[2] = InstImm(op_regimm, zero, rt_bgez, BOffImm16(5 * sizeof(uint32_t))).encode(); // There are 4 nops after this } -#endif return; }