@@ -159,7 +159,6 @@ Lowerer::LowerRange(IR::Instr *instrStart, IR::Instr *instrEnd, bool defaultDoFa
159159{
160160 bool noMathFastPath;
161161 bool noFieldFastPath;
162- bool isStrictMode = this->m_func->GetJITFunctionBody()->IsStrictMode();
163162 noFieldFastPath = !defaultDoFastPath;
164163 noMathFastPath = !defaultDoFastPath;
165164
@@ -538,7 +537,12 @@ Lowerer::LowerRange(IR::Instr *instrStart, IR::Instr *instrEnd, bool defaultDoFa
538537
539538 case Js::OpCode::StSuperFld:
540539 instrPrev = GenerateCompleteStFld(instr, !noFieldFastPath, IR::HelperOp_PatchPutValueWithThisPtrNoLocalFastPath, IR::HelperOp_PatchPutValueWithThisPtrNoLocalFastPathPolymorphic,
541- IR::HelperOp_PatchPutValueWithThisPtr, IR::HelperOp_PatchPutValueWithThisPtrPolymorphic, true, isStrictMode ? Js::PropertyOperation_StrictMode : Js::PropertyOperation_None);
540+ IR::HelperOp_PatchPutValueWithThisPtr, IR::HelperOp_PatchPutValueWithThisPtrPolymorphic, true, Js::PropertyOperation_None);
541+ break;
542+
543+ case Js::OpCode::StSuperFldStrict:
544+ instrPrev = GenerateCompleteStFld(instr, !noFieldFastPath, IR::HelperOp_PatchPutValueWithThisPtrNoLocalFastPath, IR::HelperOp_PatchPutValueWithThisPtrNoLocalFastPathPolymorphic,
545+ IR::HelperOp_PatchPutValueWithThisPtr, IR::HelperOp_PatchPutValueWithThisPtrPolymorphic, true, Js::PropertyOperation_StrictMode);
542546 break;
543547
544548 case Js::OpCode::StRootFld:
@@ -7132,7 +7136,7 @@ Lowerer::LowerProfiledStFld(IR::JitProfilingInstr *stFldInstr, Js::PropertyOpera
71327136
71337137 m_lowererMD.LoadHelperArgument(stFldInstr, IR::Opnd::CreateFramePointerOpnd(m_func));
71347138
7135- if (stFldInstr->m_opcode == Js::OpCode::StSuperFld)
7139+ if (stFldInstr->m_opcode == Js::OpCode::StSuperFld || stFldInstr->m_opcode == Js::OpCode::StSuperFldStrict )
71367140 {
71377141 m_lowererMD.LoadHelperArgument(stFldInstr, stFldInstr->UnlinkSrc2());
71387142 }
@@ -7159,6 +7163,10 @@ Lowerer::LowerProfiledStFld(IR::JitProfilingInstr *stFldInstr, Js::PropertyOpera
71597163 helper = IR::HelperProfiledStSuperFld;
71607164 break;
71617165
7166+ case Js::OpCode::StSuperFldStrict:
7167+ helper = IR::HelperProfiledStSuperFld_Strict;
7168+ break;
7169+
71627170 default:
71637171 helper =
71647172 flags & Js::PropertyOperation_Root
@@ -7224,7 +7232,7 @@ Lowerer::LowerStFld(
72247232 }
72257233
72267234 IR::Opnd *src = stFldInstr->UnlinkSrc1();
7227- if (stFldInstr->m_opcode == Js::OpCode::StSuperFld)
7235+ if (stFldInstr->m_opcode == Js::OpCode::StSuperFld || stFldInstr->m_opcode == Js::OpCode::StSuperFldStrict )
72287236 {
72297237 m_lowererMD.LoadHelperArgument(stFldInstr, stFldInstr->UnlinkSrc2());
72307238 }
0 commit comments