@@ -3328,6 +3328,7 @@ Lowerer::TryGenerateFastCmSrXx(IR::Instr * instr)
3328
3328
return false;
3329
3329
}
3330
3330
3331
+ // Generate fast path for StrictEquals when one of the sources are undefined, null, boolean
3331
3332
bool
3332
3333
Lowerer::TryGenerateFastBrSrXx(IR::Instr * instr, IR::RegOpnd * srcReg1, IR::RegOpnd * srcReg2, IR::Instr ** pInstrPrev, bool noMathFastPath)
3333
3334
{
@@ -10375,6 +10376,7 @@ Lowerer::LowerEqualityBranch(IR::Instr* instr, IR::JnHelperMethod helper)
10375
10376
return instrPrev;
10376
10377
}
10377
10378
10379
+ // Generate fast path for StrictEquals for objects that are not GlobalObject, HostDispatch or External to be pointer comparison
10378
10380
IR::Instr *
10379
10381
Lowerer::LowerStrictBrOrCm(IR::Instr * instr, IR::JnHelperMethod helperMethod, bool noMathFastPath, bool isBranch, bool isHelper)
10380
10382
{
@@ -23521,6 +23523,7 @@ bool Lowerer::GenerateFastEqBoolInt(IR::Instr * instr, bool *pNeedHelper, bool i
23521
23523
return true;
23522
23524
}
23523
23525
23526
+ // Generate fast path for StrictEquals when one of the source have a definite valuetype
23524
23527
bool Lowerer::GenerateFastBrOrCmEqDefinite(IR::Instr * instr, IR::JnHelperMethod helperMethod, bool *pNeedHelper, bool isBranch, bool isInHelper)
23525
23528
{
23526
23529
IR::Opnd *src1 = instr->GetSrc1();
@@ -23625,6 +23628,7 @@ bool Lowerer::GenerateFastBrOrCmEqDefinite(IR::Instr * instr, IR::JnHelperMethod
23625
23628
return true;
23626
23629
}
23627
23630
23631
+ // Generate fast path for Strict Equals when both sources are likely boolean/likely object/likely symbol
23628
23632
bool Lowerer::GenerateFastBrEqLikely(IR::BranchInstr * instrBranch, bool *pNeedHelper, bool isInHelper)
23629
23633
{
23630
23634
IR::Opnd *src1 = instrBranch->GetSrc1();
0 commit comments