Commit bd4170cd authored by André Bargull's avatar André Bargull
Browse files

Bug 1686692 - Part 8: Set MCompare comparison type in the constructor. r=jandem

Directly set the comparison in the constructor. This will allow to remove
`MCompare::Compare_Unknown` in the next part.

Depends on D101876

Differential Revision: https://phabricator.services.mozilla.com/D101878
parent 25838f85
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -3989,10 +3989,7 @@ MDefinition* MCompare::tryFoldCharCompare(TempAllocator& alloc) {
    return this;
  }

  MCompare* ins = MCompare::New(alloc, left, right, jsop());
  ins->setCompareType(MCompare::Compare_Int32);

  return ins;
  return MCompare::New(alloc, left, right, jsop(), MCompare::Compare_Int32);
}

MDefinition* MCompare::foldsTo(TempAllocator& alloc) {
+4 −4
Original line number Diff line number Diff line
@@ -2915,9 +2915,10 @@ class MCompare : public MBinaryInstruction, public ComparePolicy::Data {
  // to integer as well.
  bool truncateOperands_;

  MCompare(MDefinition* left, MDefinition* right, JSOp jsop)
  MCompare(MDefinition* left, MDefinition* right, JSOp jsop,
           CompareType compareType)
      : MBinaryInstruction(classOpcode, left, right),
        compareType_(Compare_Unknown),
        compareType_(compareType),
        jsop_(jsop),
        operandsAreNeverNaN_(false),
        truncateOperands_(false) {
@@ -2937,8 +2938,7 @@ class MCompare : public MBinaryInstruction, public ComparePolicy::Data {
               compareType == Compare_Double ||
               compareType == Compare_Float32 ||
               compareType == Compare_RefOrNull);
    auto* ins = MCompare::New(alloc, left, right, jsop);
    ins->setCompareType(compareType);
    auto* ins = MCompare::New(alloc, left, right, jsop, compareType);
    ins->setResultType(MIRType::Int32);
    return ins;
  }
+6 −7
Original line number Diff line number Diff line
@@ -1788,8 +1788,8 @@ bool WarpCacheIRTranspiler::emitLoadTypedArrayElementExistsResult(
  add(length);

  // Unsigned comparison to catch negative indices.
  auto* ins = MCompare::New(alloc(), index, length, JSOp::Lt);
  ins->setCompareType(MCompare::Compare_UInt32);
  auto* ins =
      MCompare::New(alloc(), index, length, JSOp::Lt, MCompare::Compare_UInt32);
  add(ins);

  pushResult(ins);
@@ -2571,8 +2571,7 @@ bool WarpCacheIRTranspiler::emitCompareResult(
  MDefinition* lhs = getOperand(lhsId);
  MDefinition* rhs = getOperand(rhsId);

  auto* ins = MCompare::New(alloc(), lhs, rhs, op);
  ins->setCompareType(compareType);
  auto* ins = MCompare::New(alloc(), lhs, rhs, op, compareType);
  add(ins);

  pushResult(ins);
@@ -2642,9 +2641,9 @@ bool WarpCacheIRTranspiler::emitCompareNullUndefinedResult(
  // is null or undefined.
  MDefinition* cst =
      isUndefined ? constant(UndefinedValue()) : constant(NullValue());
  auto* ins = MCompare::New(alloc(), input, cst, op);
  ins->setCompareType(isUndefined ? MCompare::Compare_Undefined
                                  : MCompare::Compare_Null);
  auto compareType =
      isUndefined ? MCompare::Compare_Undefined : MCompare::Compare_Null;
  auto* ins = MCompare::New(alloc(), input, cst, op, compareType);
  add(ins);

  pushResult(ins);
+6 −5
Original line number Diff line number Diff line
@@ -141,8 +141,8 @@ BEGIN_TEST(testJitRangeAnalysis_MathSignBeta) {
  entry->add(c0);
  MConstant* cm0 = MConstant::New(func.alloc, DoubleValue(-0.0));
  entry->add(cm0);
  MCompare* cmp = MCompare::New(func.alloc, p, c0, JSOp::Lt);
  cmp->setCompareType(MCompare::Compare_Double);
  MCompare* cmp =
      MCompare::New(func.alloc, p, c0, JSOp::Lt, MCompare::Compare_Double);
  entry->add(cmp);
  entry->end(MTest::New(func.alloc, cmp, thenBlock, elseBlock));

@@ -159,8 +159,8 @@ BEGIN_TEST(testJitRangeAnalysis_MathSignBeta) {
  // else
  // {
  //   if (p >= 0)
  MCompare* elseCmp = MCompare::New(func.alloc, p, c0, JSOp::Ge);
  elseCmp->setCompareType(MCompare::Compare_Double);
  MCompare* elseCmp =
      MCompare::New(func.alloc, p, c0, JSOp::Ge, MCompare::Compare_Double);
  elseBlock->add(elseCmp);
  elseBlock->end(MTest::New(func.alloc, elseCmp, elseThenBlock, elseElseBlock));

@@ -242,7 +242,8 @@ BEGIN_TEST(testJitRangeAnalysis_StrictCompareBeta) {
  entry->add(p);
  MConstant* c0 = MConstant::New(func.alloc, DoubleValue(0.0));
  entry->add(c0);
  MCompare* cmp = MCompare::New(func.alloc, p, c0, JSOp::StrictEq);
  MCompare* cmp = MCompare::New(func.alloc, p, c0, JSOp::StrictEq,
                                MCompare::Compare_Double);
  entry->add(cmp);
  entry->end(MTest::New(func.alloc, cmp, thenBlock, elseBlock));