diff --git a/lib/Backend/GlobOpt.cpp b/lib/Backend/GlobOpt.cpp index 8b16464ad45..2a66bfa5c3b 100644 --- a/lib/Backend/GlobOpt.cpp +++ b/lib/Backend/GlobOpt.cpp @@ -15399,6 +15399,24 @@ GlobOpt::CheckJsArrayKills(IR::Instr *const instr) } break; } + + case Js::OpCode::InitProto: + { + // Find the 'this' parameter and check if it's possible for it to be an array + IR::Opnd *const arrayOpnd = instr->GetSrc1(); + Assert(arrayOpnd); + const ValueType arrayValueType(arrayOpnd->GetValueType()); + if(!arrayOpnd->IsRegOpnd() || (useValueTypes && arrayValueType.IsNotArrayOrObjectWithArray())) + { + break; + } + + if(doNativeArrayTypeSpec && !(useValueTypes && arrayValueType.IsNotNativeArray())) + { + kills.SetKillsNativeArrays(); + } + break; + } } return kills;