@@ -3328,6 +3328,7 @@ Lowerer::TryGenerateFastCmSrXx(IR::Instr * instr)
33283328 return false;
33293329}
33303330
3331+ // Generate fast path for StrictEquals when one of the sources are undefined, null, boolean
33313332bool
33323333Lowerer::TryGenerateFastBrSrXx(IR::Instr * instr, IR::RegOpnd * srcReg1, IR::RegOpnd * srcReg2, IR::Instr ** pInstrPrev, bool noMathFastPath)
33333334{
@@ -10375,6 +10376,7 @@ Lowerer::LowerEqualityBranch(IR::Instr* instr, IR::JnHelperMethod helper)
1037510376 return instrPrev;
1037610377}
1037710378
10379+ // Generate fast path for StrictEquals for objects that are not GlobalObject, HostDispatch or External to be pointer comparison
1037810380IR::Instr *
1037910381Lowerer::LowerStrictBrOrCm(IR::Instr * instr, IR::JnHelperMethod helperMethod, bool noMathFastPath, bool isBranch, bool isHelper)
1038010382{
@@ -23521,6 +23523,7 @@ bool Lowerer::GenerateFastEqBoolInt(IR::Instr * instr, bool *pNeedHelper, bool i
2352123523 return true;
2352223524}
2352323525
23526+ // Generate fast path for StrictEquals when one of the source have a definite valuetype
2352423527bool Lowerer::GenerateFastBrOrCmEqDefinite(IR::Instr * instr, IR::JnHelperMethod helperMethod, bool *pNeedHelper, bool isBranch, bool isInHelper)
2352523528{
2352623529 IR::Opnd *src1 = instr->GetSrc1();
@@ -23625,6 +23628,7 @@ bool Lowerer::GenerateFastBrOrCmEqDefinite(IR::Instr * instr, IR::JnHelperMethod
2362523628 return true;
2362623629}
2362723630
23631+ // Generate fast path for Strict Equals when both sources are likely boolean/likely object/likely symbol
2362823632bool Lowerer::GenerateFastBrEqLikely(IR::BranchInstr * instrBranch, bool *pNeedHelper, bool isInHelper)
2362923633{
2363023634 IR::Opnd *src1 = instrBranch->GetSrc1();
0 commit comments