mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-10-09 16:55:15 +00:00
#561: M1544386 (apply to FPR14 for SPR1)
This commit is contained in:
parent
98a8aeb0ab
commit
44e037bfbc
@ -541,7 +541,8 @@ IonBuilder::inlineArrayPopShift(CallInfo& callInfo, MArrayPopShift::Mode mode)
|
|||||||
return InliningStatus_NotInlined;
|
return InliningStatus_NotInlined;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ArrayPrototypeHasIndexedProperty(this, script())) {
|
// Watch out for extra indexed properties on the object or its prototype.
|
||||||
|
if (ElementAccessHasExtraIndexedProperty(this, obj)) {
|
||||||
trackOptimizationOutcome(TrackedOutcome::ProtoIndexedProps);
|
trackOptimizationOutcome(TrackedOutcome::ProtoIndexedProps);
|
||||||
return InliningStatus_NotInlined;
|
return InliningStatus_NotInlined;
|
||||||
}
|
}
|
||||||
@ -675,14 +676,8 @@ IonBuilder::inlineArrayPush(CallInfo& callInfo)
|
|||||||
const Class* clasp = thisTypes->getKnownClass(constraints());
|
const Class* clasp = thisTypes->getKnownClass(constraints());
|
||||||
if (clasp != &ArrayObject::class_ && clasp != &UnboxedArrayObject::class_)
|
if (clasp != &ArrayObject::class_ && clasp != &UnboxedArrayObject::class_)
|
||||||
return InliningStatus_NotInlined;
|
return InliningStatus_NotInlined;
|
||||||
if (thisTypes->hasObjectFlags(constraints(), OBJECT_FLAG_SPARSE_INDEXES |
|
|
||||||
OBJECT_FLAG_LENGTH_OVERFLOW))
|
|
||||||
{
|
|
||||||
trackOptimizationOutcome(TrackedOutcome::ArrayBadFlags);
|
|
||||||
return InliningStatus_NotInlined;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ArrayPrototypeHasIndexedProperty(this, script())) {
|
if (ElementAccessHasExtraIndexedProperty(this, obj)) {
|
||||||
trackOptimizationOutcome(TrackedOutcome::ProtoIndexedProps);
|
trackOptimizationOutcome(TrackedOutcome::ProtoIndexedProps);
|
||||||
return InliningStatus_NotInlined;
|
return InliningStatus_NotInlined;
|
||||||
}
|
}
|
||||||
@ -755,12 +750,6 @@ IonBuilder::inlineArrayConcat(CallInfo& callInfo)
|
|||||||
if (thisClasp != &ArrayObject::class_ && thisClasp != &UnboxedArrayObject::class_)
|
if (thisClasp != &ArrayObject::class_ && thisClasp != &UnboxedArrayObject::class_)
|
||||||
return InliningStatus_NotInlined;
|
return InliningStatus_NotInlined;
|
||||||
bool unboxedThis = (thisClasp == &UnboxedArrayObject::class_);
|
bool unboxedThis = (thisClasp == &UnboxedArrayObject::class_);
|
||||||
if (thisTypes->hasObjectFlags(constraints(), OBJECT_FLAG_SPARSE_INDEXES |
|
|
||||||
OBJECT_FLAG_LENGTH_OVERFLOW))
|
|
||||||
{
|
|
||||||
trackOptimizationOutcome(TrackedOutcome::ArrayBadFlags);
|
|
||||||
return InliningStatus_NotInlined;
|
|
||||||
}
|
|
||||||
|
|
||||||
const Class* argClasp = argTypes->getKnownClass(constraints());
|
const Class* argClasp = argTypes->getKnownClass(constraints());
|
||||||
if (argClasp != &ArrayObject::class_ && argClasp != &UnboxedArrayObject::class_)
|
if (argClasp != &ArrayObject::class_ && argClasp != &UnboxedArrayObject::class_)
|
||||||
@ -773,8 +762,8 @@ IonBuilder::inlineArrayConcat(CallInfo& callInfo)
|
|||||||
return InliningStatus_NotInlined;
|
return InliningStatus_NotInlined;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Watch out for indexed properties on the prototype.
|
// Watch out for extra indexed properties on the object or its prototype.
|
||||||
if (ArrayPrototypeHasIndexedProperty(this, script())) {
|
if (ElementAccessHasExtraIndexedProperty(this, thisArg)) {
|
||||||
trackOptimizationOutcome(TrackedOutcome::ProtoIndexedProps);
|
trackOptimizationOutcome(TrackedOutcome::ProtoIndexedProps);
|
||||||
return InliningStatus_NotInlined;
|
return InliningStatus_NotInlined;
|
||||||
}
|
}
|
||||||
@ -896,8 +885,8 @@ IonBuilder::inlineArraySlice(CallInfo& callInfo)
|
|||||||
return InliningStatus_NotInlined;
|
return InliningStatus_NotInlined;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Watch out for indexed properties on the prototype.
|
// Watch out for indexed properties on the object or the prototype.
|
||||||
if (ArrayPrototypeHasIndexedProperty(this, script())) {
|
if (ElementAccessHasExtraIndexedProperty(this, obj)) {
|
||||||
trackOptimizationOutcome(TrackedOutcome::ProtoIndexedProps);
|
trackOptimizationOutcome(TrackedOutcome::ProtoIndexedProps);
|
||||||
return InliningStatus_NotInlined;
|
return InliningStatus_NotInlined;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user