Loading js/src/jit/arm/CodeGenerator-arm.cpp +0 −27 Original line number Diff line number Diff line Loading @@ -1481,33 +1481,6 @@ void CodeGenerator::visitCompareFAndBranch(LCompareFAndBranch* comp) { comp->ifFalse()); } void CodeGenerator::visitCompareB(LCompareB* lir) { MCompare* mir = lir->mir(); const ValueOperand lhs = ToValue(lir, LCompareB::Lhs); const LAllocation* rhs = lir->rhs(); const Register output = ToRegister(lir->output()); MOZ_ASSERT(mir->jsop() == JSOp::StrictEq || mir->jsop() == JSOp::StrictNe); Label notBoolean, done; masm.branchTestBoolean(Assembler::NotEqual, lhs, ¬Boolean); { if (rhs->isConstant()) { masm.cmp32(lhs.payloadReg(), Imm32(rhs->toConstant()->toBoolean())); } else { masm.cmp32(lhs.payloadReg(), ToRegister(rhs)); } masm.emitSet(JSOpToCondition(mir->compareType(), mir->jsop()), output); masm.jump(&done); } masm.bind(¬Boolean); { masm.move32(Imm32(mir->jsop() == JSOp::StrictNe), output); } masm.bind(&done); } void CodeGenerator::visitBitAndAndBranch(LBitAndAndBranch* baab) { ScratchRegisterScope scratch(masm); if (baab->right()->isConstant()) { Loading js/src/jit/arm64/CodeGenerator-arm64.cpp +0 −24 Original line number Diff line number Diff line Loading @@ -1412,30 +1412,6 @@ void CodeGenerator::visitCompareFAndBranch(LCompareFAndBranch* comp) { emitBranch(cond, comp->ifTrue(), comp->ifFalse()); } void CodeGenerator::visitCompareB(LCompareB* lir) { MCompare* mir = lir->mir(); const ValueOperand lhs = ToValue(lir, LCompareB::Lhs); const LAllocation* rhs = lir->rhs(); const Register output = ToRegister(lir->output()); const Assembler::Condition cond = JSOpToCondition(mir->compareType(), mir->jsop()); vixl::UseScratchRegisterScope temps(&masm.asVIXL()); const Register scratch = temps.AcquireX().asUnsized(); MOZ_ASSERT(mir->jsop() == JSOp::StrictEq || mir->jsop() == JSOp::StrictNe); // Load boxed boolean into scratch. if (rhs->isConstant()) { masm.moveValue(rhs->toConstant()->toJSValue(), ValueOperand(scratch)); } else { masm.boxValue(JSVAL_TYPE_BOOLEAN, ToRegister(rhs), scratch); } // Compare the entire Value. masm.cmpPtrSet(cond, lhs.valueReg(), scratch, output); } void CodeGenerator::visitBitAndAndBranch(LBitAndAndBranch* baab) { if (baab->right()->isConstant()) { masm.Tst(toWRegister(baab->left()), Operand(ToInt32(baab->right()))); Loading js/src/jit/mips32/CodeGenerator-mips32.cpp +0 −28 Original line number Diff line number Diff line Loading @@ -68,34 +68,6 @@ void CodeGeneratorMIPS::splitTagForTest(const ValueOperand& value, MOZ_ASSERT(value.typeReg() == tag); } void CodeGenerator::visitCompareB(LCompareB* lir) { MCompare* mir = lir->mir(); const ValueOperand lhs = ToValue(lir, LCompareB::Lhs); const LAllocation* rhs = lir->rhs(); const Register output = ToRegister(lir->output()); MOZ_ASSERT(mir->jsop() == JSOp::StrictEq || mir->jsop() == JSOp::StrictNe); Assembler::Condition cond = JSOpToCondition(mir->compareType(), mir->jsop()); Label notBoolean, done; masm.branchTestBoolean(Assembler::NotEqual, lhs, ¬Boolean); { if (rhs->isConstant()) { masm.cmp32Set(cond, lhs.payloadReg(), Imm32(rhs->toConstant()->toBoolean()), output); } else { masm.cmp32Set(cond, lhs.payloadReg(), ToRegister(rhs), output); } masm.jump(&done); } masm.bind(¬Boolean); { masm.move32(Imm32(mir->jsop() == JSOp::StrictNe), output); } masm.bind(&done); } void CodeGenerator::visitCompareI64(LCompareI64* lir) { MCompare* mir = lir->mir(); MOZ_ASSERT(mir->compareType() == MCompare::Compare_Int64 || Loading js/src/jit/mips64/CodeGenerator-mips64.cpp +0 −22 Original line number Diff line number Diff line Loading @@ -128,28 +128,6 @@ void CodeGeneratorMIPS64::splitTagForTest(const ValueOperand& value, masm.splitTag(value.valueReg(), tag); } void CodeGenerator::visitCompareB(LCompareB* lir) { MCompare* mir = lir->mir(); const ValueOperand lhs = ToValue(lir, LCompareB::Lhs); const LAllocation* rhs = lir->rhs(); const Register output = ToRegister(lir->output()); MOZ_ASSERT(mir->jsop() == JSOp::StrictEq || mir->jsop() == JSOp::StrictNe); Assembler::Condition cond = JSOpToCondition(mir->compareType(), mir->jsop()); // Load boxed boolean in ScratchRegister. if (rhs->isConstant()) { masm.moveValue(rhs->toConstant()->toJSValue(), ValueOperand(ScratchRegister)); } else { masm.boxValue(JSVAL_TYPE_BOOLEAN, ToRegister(rhs), ScratchRegister); } // Perform the comparison. masm.cmpPtrSet(cond, lhs.valueReg(), ScratchRegister, output); } void CodeGenerator::visitCompareI64(LCompareI64* lir) { MCompare* mir = lir->mir(); MOZ_ASSERT(mir->compareType() == MCompare::Compare_Int64 || Loading js/src/jit/shared/LIR-shared.h +0 −20 Original line number Diff line number Diff line Loading @@ -1792,26 +1792,6 @@ class LCompareBigIntString : public LCallInstructionHelper<1, 2, 0> { MCompare* mir() { return mir_->toCompare(); } }; // Used for strict-equality comparisons where one side is a boolean // and the other is a value. Note that CompareI is used to compare // two booleans. class LCompareB : public LInstructionHelper<1, BOX_PIECES + 1, 0> { public: LIR_HEADER(CompareB) LCompareB(const LBoxAllocation& lhs, const LAllocation& rhs) : LInstructionHelper(classOpcode) { setBoxOperand(Lhs, lhs); setOperand(BOX_PIECES, rhs); } static const size_t Lhs = 0; const LAllocation* rhs() { return getOperand(BOX_PIECES); } MCompare* mir() { return mir_->toCompare(); } }; class LCompareVM : public LCallInstructionHelper<1, 2 * BOX_PIECES, 0> { public: LIR_HEADER(CompareVM) Loading Loading
js/src/jit/arm/CodeGenerator-arm.cpp +0 −27 Original line number Diff line number Diff line Loading @@ -1481,33 +1481,6 @@ void CodeGenerator::visitCompareFAndBranch(LCompareFAndBranch* comp) { comp->ifFalse()); } void CodeGenerator::visitCompareB(LCompareB* lir) { MCompare* mir = lir->mir(); const ValueOperand lhs = ToValue(lir, LCompareB::Lhs); const LAllocation* rhs = lir->rhs(); const Register output = ToRegister(lir->output()); MOZ_ASSERT(mir->jsop() == JSOp::StrictEq || mir->jsop() == JSOp::StrictNe); Label notBoolean, done; masm.branchTestBoolean(Assembler::NotEqual, lhs, ¬Boolean); { if (rhs->isConstant()) { masm.cmp32(lhs.payloadReg(), Imm32(rhs->toConstant()->toBoolean())); } else { masm.cmp32(lhs.payloadReg(), ToRegister(rhs)); } masm.emitSet(JSOpToCondition(mir->compareType(), mir->jsop()), output); masm.jump(&done); } masm.bind(¬Boolean); { masm.move32(Imm32(mir->jsop() == JSOp::StrictNe), output); } masm.bind(&done); } void CodeGenerator::visitBitAndAndBranch(LBitAndAndBranch* baab) { ScratchRegisterScope scratch(masm); if (baab->right()->isConstant()) { Loading
js/src/jit/arm64/CodeGenerator-arm64.cpp +0 −24 Original line number Diff line number Diff line Loading @@ -1412,30 +1412,6 @@ void CodeGenerator::visitCompareFAndBranch(LCompareFAndBranch* comp) { emitBranch(cond, comp->ifTrue(), comp->ifFalse()); } void CodeGenerator::visitCompareB(LCompareB* lir) { MCompare* mir = lir->mir(); const ValueOperand lhs = ToValue(lir, LCompareB::Lhs); const LAllocation* rhs = lir->rhs(); const Register output = ToRegister(lir->output()); const Assembler::Condition cond = JSOpToCondition(mir->compareType(), mir->jsop()); vixl::UseScratchRegisterScope temps(&masm.asVIXL()); const Register scratch = temps.AcquireX().asUnsized(); MOZ_ASSERT(mir->jsop() == JSOp::StrictEq || mir->jsop() == JSOp::StrictNe); // Load boxed boolean into scratch. if (rhs->isConstant()) { masm.moveValue(rhs->toConstant()->toJSValue(), ValueOperand(scratch)); } else { masm.boxValue(JSVAL_TYPE_BOOLEAN, ToRegister(rhs), scratch); } // Compare the entire Value. masm.cmpPtrSet(cond, lhs.valueReg(), scratch, output); } void CodeGenerator::visitBitAndAndBranch(LBitAndAndBranch* baab) { if (baab->right()->isConstant()) { masm.Tst(toWRegister(baab->left()), Operand(ToInt32(baab->right()))); Loading
js/src/jit/mips32/CodeGenerator-mips32.cpp +0 −28 Original line number Diff line number Diff line Loading @@ -68,34 +68,6 @@ void CodeGeneratorMIPS::splitTagForTest(const ValueOperand& value, MOZ_ASSERT(value.typeReg() == tag); } void CodeGenerator::visitCompareB(LCompareB* lir) { MCompare* mir = lir->mir(); const ValueOperand lhs = ToValue(lir, LCompareB::Lhs); const LAllocation* rhs = lir->rhs(); const Register output = ToRegister(lir->output()); MOZ_ASSERT(mir->jsop() == JSOp::StrictEq || mir->jsop() == JSOp::StrictNe); Assembler::Condition cond = JSOpToCondition(mir->compareType(), mir->jsop()); Label notBoolean, done; masm.branchTestBoolean(Assembler::NotEqual, lhs, ¬Boolean); { if (rhs->isConstant()) { masm.cmp32Set(cond, lhs.payloadReg(), Imm32(rhs->toConstant()->toBoolean()), output); } else { masm.cmp32Set(cond, lhs.payloadReg(), ToRegister(rhs), output); } masm.jump(&done); } masm.bind(¬Boolean); { masm.move32(Imm32(mir->jsop() == JSOp::StrictNe), output); } masm.bind(&done); } void CodeGenerator::visitCompareI64(LCompareI64* lir) { MCompare* mir = lir->mir(); MOZ_ASSERT(mir->compareType() == MCompare::Compare_Int64 || Loading
js/src/jit/mips64/CodeGenerator-mips64.cpp +0 −22 Original line number Diff line number Diff line Loading @@ -128,28 +128,6 @@ void CodeGeneratorMIPS64::splitTagForTest(const ValueOperand& value, masm.splitTag(value.valueReg(), tag); } void CodeGenerator::visitCompareB(LCompareB* lir) { MCompare* mir = lir->mir(); const ValueOperand lhs = ToValue(lir, LCompareB::Lhs); const LAllocation* rhs = lir->rhs(); const Register output = ToRegister(lir->output()); MOZ_ASSERT(mir->jsop() == JSOp::StrictEq || mir->jsop() == JSOp::StrictNe); Assembler::Condition cond = JSOpToCondition(mir->compareType(), mir->jsop()); // Load boxed boolean in ScratchRegister. if (rhs->isConstant()) { masm.moveValue(rhs->toConstant()->toJSValue(), ValueOperand(ScratchRegister)); } else { masm.boxValue(JSVAL_TYPE_BOOLEAN, ToRegister(rhs), ScratchRegister); } // Perform the comparison. masm.cmpPtrSet(cond, lhs.valueReg(), ScratchRegister, output); } void CodeGenerator::visitCompareI64(LCompareI64* lir) { MCompare* mir = lir->mir(); MOZ_ASSERT(mir->compareType() == MCompare::Compare_Int64 || Loading
js/src/jit/shared/LIR-shared.h +0 −20 Original line number Diff line number Diff line Loading @@ -1792,26 +1792,6 @@ class LCompareBigIntString : public LCallInstructionHelper<1, 2, 0> { MCompare* mir() { return mir_->toCompare(); } }; // Used for strict-equality comparisons where one side is a boolean // and the other is a value. Note that CompareI is used to compare // two booleans. class LCompareB : public LInstructionHelper<1, BOX_PIECES + 1, 0> { public: LIR_HEADER(CompareB) LCompareB(const LBoxAllocation& lhs, const LAllocation& rhs) : LInstructionHelper(classOpcode) { setBoxOperand(Lhs, lhs); setOperand(BOX_PIECES, rhs); } static const size_t Lhs = 0; const LAllocation* rhs() { return getOperand(BOX_PIECES); } MCompare* mir() { return mir_->toCompare(); } }; class LCompareVM : public LCallInstructionHelper<1, 2 * BOX_PIECES, 0> { public: LIR_HEADER(CompareVM) Loading