|
|
@@ -254,7 +254,7 @@ Lowerer::LowerRange(IR::Instr *instrStart, IR::Instr *instrEnd, bool defaultDoFa
|
|
|
case Js::OpCode::InvalCachedScope:
|
|
|
this->LowerBinaryHelper(instr, IR::HelperOP_InvalidateCachedScope);
|
|
|
break;
|
|
|
-
|
|
|
+
|
|
|
case Js::OpCode::InitCachedScope:
|
|
|
instrPrev = this->LowerInitCachedScope(instr);
|
|
|
break;
|
|
|
@@ -3166,7 +3166,7 @@ Lowerer::LoadOptimizationOverridesValueOpnd(IR::Instr *instr, OptimizationOverri
|
|
|
|
|
|
IR::Opnd *
|
|
|
Lowerer::LoadNumberAllocatorValueOpnd(IR::Instr *instr, NumberAllocatorValue valueType)
|
|
|
-{
|
|
|
+{
|
|
|
ScriptContextInfo *scriptContext = instr->m_func->GetScriptContextInfo();
|
|
|
bool allowNativeCodeBumpAllocation = scriptContext->GetRecyclerAllowNativeCodeBumpAllocation();
|
|
|
|
|
|
@@ -3513,7 +3513,7 @@ Lowerer::LowerNewScObjectLiteral(IR::Instr *newObjInstr)
|
|
|
propertyArrayOpnd = IR::AddrOpnd::New(propArrayAddr, IR::AddrOpndKindDynamicMisc, this->m_func);
|
|
|
|
|
|
//#if 0 TODO: OOP JIT, obj literal types
|
|
|
- // should pass in isShared bit through RPC, enable for in-proc jit to see perf impact
|
|
|
+ // should pass in isShared bit through RPC, enable for in-proc jit to see perf impact
|
|
|
Js::DynamicType * literalType = func->IsOOPJIT() || !CONFIG_FLAG(OOPJITMissingOpts) ? nullptr : *(Js::DynamicType **)literalTypeRef;
|
|
|
|
|
|
if (literalType == nullptr || !literalType->GetIsShared())
|
|
|
@@ -6832,7 +6832,7 @@ Lowerer::GenerateStFldWithCachedType(IR::Instr *instrStFld, bool* continueAsHelp
|
|
|
|
|
|
if (hasTypeCheckBailout)
|
|
|
{
|
|
|
- AssertMsg(PHASE_ON1(Js::ObjTypeSpecIsolatedFldOpsWithBailOutPhase) || !propertySymOpnd->IsTypeDead(),
|
|
|
+ AssertMsg(PHASE_ON1(Js::ObjTypeSpecIsolatedFldOpsWithBailOutPhase) || !propertySymOpnd->IsTypeDead(),
|
|
|
"Why does a field store have a type check bailout, if its type is dead?");
|
|
|
|
|
|
if (instrStFld->GetBailOutInfo()->bailOutInstr != instrStFld)
|
|
|
@@ -8590,7 +8590,7 @@ Lowerer::LowerMemset(IR::Instr * instr, IR::RegOpnd * helperRet)
|
|
|
m_lowererMD.LoadHelperArgument(instr, baseOpnd);
|
|
|
m_lowererMD.ChangeToHelperCall(instr, helperMethod);
|
|
|
dst->Free(m_func);
|
|
|
-
|
|
|
+
|
|
|
return instrPrev;
|
|
|
}
|
|
|
|
|
|
@@ -8865,10 +8865,10 @@ Lowerer::GenerateFastBrBReturn(IR::Instr * instr)
|
|
|
// TEST firstPrototypeOpnd, firstPrototypeOpnd
|
|
|
// JNE $helper
|
|
|
IR::RegOpnd * firstPrototypeOpnd = IR::RegOpnd::New(TyMachPtr, this->m_func);
|
|
|
- InsertMove(firstPrototypeOpnd,
|
|
|
+ InsertMove(firstPrototypeOpnd,
|
|
|
IR::IndirOpnd::New(forInEnumeratorOpnd, Js::ForInObjectEnumerator::GetOffsetOfFirstPrototype(), TyMachPtr, this->m_func), instr);
|
|
|
InsertTestBranch(firstPrototypeOpnd, firstPrototypeOpnd, Js::OpCode::BrNeq_A, labelHelper, instr);
|
|
|
-
|
|
|
+
|
|
|
// MOV currentEnumeratorOpnd, forInEnumerator->enumerator.currentEnumerator
|
|
|
// TEST currentEnumeratorOpnd, currentEnumeratorOpnd
|
|
|
// JNE $helper
|
|
|
@@ -8883,7 +8883,7 @@ Lowerer::GenerateFastBrBReturn(IR::Instr * instr)
|
|
|
IR::RegOpnd * objectOpnd = IR::RegOpnd::New(TyMachPtr, this->m_func);
|
|
|
InsertMove(objectOpnd,
|
|
|
IR::IndirOpnd::New(forInEnumeratorOpnd, Js::ForInObjectEnumerator::GetOffsetOfEnumeratorObject(), TyMachPtr, this->m_func), instr);
|
|
|
- InsertTestBranch(objectOpnd, objectOpnd, Js::OpCode::BrEq_A, labelHelper, instr);
|
|
|
+ InsertTestBranch(objectOpnd, objectOpnd, Js::OpCode::BrEq_A, labelHelper, instr);
|
|
|
|
|
|
// MOV initialTypeOpnd, forInEnumerator->enumerator.initialType
|
|
|
// CMP initialTypeOpnd, objectOpnd->type
|
|
|
@@ -8907,7 +8907,7 @@ Lowerer::GenerateFastBrBReturn(IR::Instr * instr)
|
|
|
InsertCompareBranch(enumeratedCountOpnd,
|
|
|
IR::IndirOpnd::New(cachedDataOpnd, Js::DynamicObjectPropertyEnumerator::GetOffsetOfCachedDataCachedCount(), TyUint32, this->m_func),
|
|
|
Js::OpCode::BrGe_A, labelHelper, instr);
|
|
|
-
|
|
|
+
|
|
|
// MOV propertyAttributesOpnd, cachedData->attributes
|
|
|
// MOV objectPropertyAttributesOpnd, propertyAttributesOpnd[enumeratedCount]
|
|
|
// CMP objectPropertyAttributesOpnd & PropertyEnumerable, PropertyEnumerable
|
|
|
@@ -8923,7 +8923,7 @@ Lowerer::GenerateFastBrBReturn(IR::Instr * instr)
|
|
|
|
|
|
InsertCompareBranch(andPropertyEnumerableInstr->GetDst(), IR::IntConstOpnd::New(PropertyEnumerable, TyUint8, this->m_func),
|
|
|
Js::OpCode::BrNeq_A, labelHelper, instr);
|
|
|
-
|
|
|
+
|
|
|
IR::Opnd * opndDst = instr->GetDst(); // ForIn result propertyString
|
|
|
Assert(opndDst->IsRegOpnd());
|
|
|
|
|
|
@@ -9932,7 +9932,7 @@ Lowerer::LowerArgIn(IR::Instr *instrArgIn)
|
|
|
// ...
|
|
|
// s2 = assign param2
|
|
|
// $done:
|
|
|
-
|
|
|
+
|
|
|
AnalysisAssert(instrArgIn);
|
|
|
|
|
|
IR::Opnd *restDst = nullptr;
|
|
|
@@ -10086,7 +10086,7 @@ Lowerer::LowerArgIn(IR::Instr *instrArgIn)
|
|
|
|
|
|
|
|
|
BVSparse<JitArenaAllocator> *formalsBv = JitAnew(this->m_alloc, BVSparse<JitArenaAllocator>, this->m_alloc);
|
|
|
-
|
|
|
+
|
|
|
while (currArgInCount > 0)
|
|
|
{
|
|
|
dstOpnd = instrArgIn->GetDst();
|
|
|
@@ -10104,9 +10104,9 @@ Lowerer::LowerArgIn(IR::Instr *instrArgIn)
|
|
|
// BrEq_A $Ln-1
|
|
|
|
|
|
currArgInCount--;
|
|
|
-
|
|
|
+
|
|
|
labelInitNext = IR::LabelInstr::New(Js::OpCode::Label, this->m_func);
|
|
|
-
|
|
|
+
|
|
|
|
|
|
// And insert the "normal" initialization before the "done" label
|
|
|
|
|
|
@@ -12543,7 +12543,7 @@ Lowerer::GenerateBailOut(IR::Instr * instr, IR::BranchInstr * branchInstr, IR::L
|
|
|
else
|
|
|
{
|
|
|
indexOpnd = IR::MemRefOpnd::New((BYTE*)bailOutInfo->bailOutRecord + BailOutRecord::GetOffsetOfPolymorphicCacheIndex(), TyUint32, this->m_func);
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
m_lowererMD.CreateAssign(
|
|
|
indexOpnd, IR::IntConstOpnd::New(bailOutInfo->polymorphicCacheIndex, TyUint32, this->m_func), instr);
|
|
|
@@ -14703,7 +14703,7 @@ Lowerer::GenerateFastElemIIntIndexCommon(
|
|
|
const bool needBailOutOnInvalidLength = !!(bailOutKind & (IR::BailOutOnInvalidatedArrayHeadSegment));
|
|
|
const bool needBailOutToHelper = !!(bailOutKind & (IR::BailOutOnArrayAccessHelperCall));
|
|
|
const bool needBailOutOnSegmentLengthCompare = needBailOutToHelper || needBailOutOnInvalidLength;
|
|
|
-
|
|
|
+
|
|
|
if(indexIsLessThanHeadSegmentLength || needBailOutOnSegmentLengthCompare)
|
|
|
{
|
|
|
if (needBailOutOnSegmentLengthCompare)
|
|
|
@@ -18544,7 +18544,7 @@ Lowerer::GenerateFastArgumentsLdElemI(IR::Instr* ldElem, IR::LabelInstr *labelFa
|
|
|
ldElem->InsertBefore(labelCreateHeapArgs);
|
|
|
emittedFastPath = true;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if (!emittedFastPath)
|
|
|
{
|
|
|
throw Js::RejitException(RejitReason::DisableStackArgOpt);
|
|
|
@@ -20655,7 +20655,7 @@ Lowerer::GenerateLdHomeObjProto(IR::Instr* instr)
|
|
|
//
|
|
|
// $Err:
|
|
|
// ThrowRuntimeReferenceError(JSERR_BadSuperReference);
|
|
|
- //
|
|
|
+ //
|
|
|
// $NoErr:
|
|
|
// instance = ((RecyclableObject*)instance)->GetPrototype();
|
|
|
// if (instance == nullptr) goto $Done;
|