--- a/accessible/base/TreeWalker.cpp
+++ b/accessible/base/TreeWalker.cpp
@@ -340,12 +340,11 @@ TreeWalker::AccessibleFor(nsIContent* aN
}
return nullptr;
}
dom::AllChildrenIterator*
TreeWalker::PopState()
{
- size_t length = mStateStack.Length();
- mStateStack.RemoveElementAt(length - 1);
+ mStateStack.RemoveLastElement();
return mStateStack.IsEmpty() ? nullptr : &mStateStack.LastElement();
}
--- a/dom/animation/KeyframeUtils.cpp
+++ b/dom/animation/KeyframeUtils.cpp
@@ -1183,17 +1183,17 @@ HandleMissingFinalKeyframe(nsTArray<Anim
// If the preference of the core Web Animations API is not enabled, don't fill
// in the missing keyframe since the missing keyframe requires support for
// additive animation which is guarded by this pref.
if (!nsContentUtils::AnimationsAPICoreEnabled()) {
// If we have already appended a new entry for the property so we have to
// remove it.
if (aCurrentAnimationProperty) {
- aResult.RemoveElementAt(aResult.Length() - 1);
+ aResult.RemoveLastElement();
}
return;
}
// If |aCurrentAnimationProperty| is nullptr, that means this is the first
// entry for the property, we have to append a new AnimationProperty for this
// property.
if (!aCurrentAnimationProperty) {
--- a/dom/base/TimeoutManager.cpp
+++ b/dom/base/TimeoutManager.cpp
@@ -151,17 +151,17 @@ TimeoutManager::CreateFiringId()
return id;
}
void
TimeoutManager::DestroyFiringId(uint32_t aFiringId)
{
MOZ_DIAGNOSTIC_ASSERT(!mFiringIdStack.IsEmpty());
MOZ_DIAGNOSTIC_ASSERT(mFiringIdStack.LastElement() == aFiringId);
- mFiringIdStack.RemoveElementAt(mFiringIdStack.Length() - 1);
+ mFiringIdStack.RemoveLastElement();
}
bool
TimeoutManager::IsValidFiringId(uint32_t aFiringId) const
{
return !IsInvalidFiringId(aFiringId);
}
--- a/dom/base/nsDocumentEncoder.cpp
+++ b/dom/base/nsDocumentEncoder.cpp
@@ -818,17 +818,17 @@ nsDocumentEncoder::SerializeRangeContext
nsresult rv = NS_OK;
for (nsINode* node : Reversed(serializedContext)) {
rv = SerializeNodeEnd(node, aString);
if (NS_FAILED(rv))
break;
}
- mRangeContexts.RemoveElementAt(mRangeContexts.Length() - 1);
+ mRangeContexts.RemoveLastElement();
return rv;
}
nsresult
nsDocumentEncoder::SerializeRangeToString(nsRange *aRange,
nsAString& aOutputString)
{
if (!aRange || aRange->Collapsed())
--- a/dom/base/nsFrameMessageManager.cpp
+++ b/dom/base/nsFrameMessageManager.cpp
@@ -1100,17 +1100,17 @@ nsFrameMessageManager::ReceiveMessage(ns
JS::HandleValueArray(argv), &rval)) {
continue;
}
if (aRetVal) {
ErrorResult rv;
StructuredCloneData* data = aRetVal->AppendElement();
data->Write(cx, rval, rv);
if (NS_WARN_IF(rv.Failed())) {
- aRetVal->RemoveElementAt(aRetVal->Length() - 1);
+ aRetVal->RemoveLastElement();
nsString msg = aMessage + NS_LITERAL_STRING(": message reply cannot be cloned. Are you trying to send an XPCOM object?");
nsCOMPtr<nsIConsoleService> console(do_GetService(NS_CONSOLESERVICE_CONTRACTID));
if (console) {
nsCOMPtr<nsIScriptError> error(do_CreateInstance(NS_SCRIPTERROR_CONTRACTID));
error->Init(msg, EmptyString(), EmptyString(),
0, 0, nsIScriptError::warningFlag, "chrome javascript",
false /* from private window */);
--- a/dom/base/nsHTMLContentSerializer.cpp
+++ b/dom/base/nsHTMLContentSerializer.cpp
@@ -323,17 +323,17 @@ nsHTMLContentSerializer::AppendElementEn
return NS_OK;
}
}
else if (mIsCopying && name == nsGkAtoms::ol && ns == kNameSpaceID_XHTML) {
NS_ASSERTION((!mOLStateStack.IsEmpty()), "Cannot have an empty OL Stack");
/* Though at this point we must always have an state to be deleted as all
the OL opening tags are supposed to push an olState object to the stack*/
if (!mOLStateStack.IsEmpty()) {
- mOLStateStack.RemoveElementAt(mOLStateStack.Length() -1);
+ mOLStateStack.RemoveLastElement();
}
}
if (ns == kNameSpaceID_XHTML) {
bool isContainer =
nsHTMLElement::IsContainer(nsHTMLTags::CaseSensitiveAtomTagToId(name));
if (!isContainer) {
// Keep this in sync with the cleanup at the end of this method.
--- a/dom/base/nsXHTMLContentSerializer.cpp
+++ b/dom/base/nsXHTMLContentSerializer.cpp
@@ -450,17 +450,17 @@ nsXHTMLContentSerializer::CheckElementEn
aForceFormat = !(mFlags & nsIDocumentEncoder::OutputIgnoreMozDirty) &&
aElement->HasAttr(kNameSpaceID_None, nsGkAtoms::mozdirty);
if (mIsCopying && aElement->IsHTMLElement(nsGkAtoms::ol)) {
NS_ASSERTION((!mOLStateStack.IsEmpty()), "Cannot have an empty OL Stack");
/* Though at this point we must always have an state to be deleted as all
the OL opening tags are supposed to push an olState object to the stack*/
if (!mOLStateStack.IsEmpty()) {
- mOLStateStack.RemoveElementAt(mOLStateStack.Length() -1);
+ mOLStateStack.RemoveLastElement();
}
}
bool dummyFormat;
return nsXMLContentSerializer::CheckElementEnd(aElement, dummyFormat, aStr);
}
bool
--- a/dom/canvas/CanvasRenderingContext2D.cpp
+++ b/dom/canvas/CanvasRenderingContext2D.cpp
@@ -2234,17 +2234,17 @@ CanvasRenderingContext2D::Restore()
}
for (const auto& clipOrTransform : CurrentState().clipsAndTransforms) {
if (clipOrTransform.IsClip()) {
mTarget->PopClip();
}
}
- mStyleStack.RemoveElementAt(mStyleStack.Length() - 1);
+ mStyleStack.RemoveLastElement();
mTarget->SetTransform(CurrentState().transform);
}
//
// transformations
//
--- a/dom/media/webrtc/MediaTrackConstraints.cpp
+++ b/dom/media/webrtc/MediaTrackConstraints.cpp
@@ -526,17 +526,17 @@ MediaConstraintsHelper::SelectSettings(
rejects.AppendElement(Move(aDevices[j]));
aDevices.RemoveElementAt(j);
} else {
++j;
}
}
if (aDevices.IsEmpty()) {
aDevices.AppendElements(Move(rejects));
- aggregateConstraints.RemoveElementAt(aggregateConstraints.Length() - 1);
+ aggregateConstraints.RemoveLastElement();
}
}
return nullptr;
}
/* static */ const char*
MediaConstraintsHelper::FindBadConstraint(
const NormalizedConstraints& aConstraints,
--- a/dom/workers/WorkerLoadInfo.cpp
+++ b/dom/workers/WorkerLoadInfo.cpp
@@ -524,17 +524,17 @@ InterfaceRequestor::GetAnyLiveTabChild()
// Does this tab child still exist? If so, return it. We are done. If the
// PBrowser actor is no longer useful, don't bother returning this tab.
if (tabChild && !static_cast<TabChild*>(tabChild.get())->IsDestroyed()) {
return tabChild.forget();
}
// Otherwise remove the stale weak reference and check the next one
- mTabChildList.RemoveElementAt(mTabChildList.Length() - 1);
+ mTabChildList.RemoveLastElement();
}
return nullptr;
}
NS_IMPL_ADDREF(WorkerLoadInfo::InterfaceRequestor)
NS_IMPL_RELEASE(WorkerLoadInfo::InterfaceRequestor)
NS_IMPL_QUERY_INTERFACE(WorkerLoadInfo::InterfaceRequestor,
--- a/dom/xbl/nsBindingManager.cpp
+++ b/dom/xbl/nsBindingManager.cpp
@@ -465,17 +465,17 @@ nsBindingManager::ExecuteDetachedHandler
nsCOMArray<nsIContent> boundElements;
nsBindingList bindings;
for (auto iter = mBoundContentSet->Iter(); !iter.Done(); iter.Next()) {
nsXBLBinding* binding = iter.Get()->GetKey()->GetXBLBinding();
if (binding && bindings.AppendElement(binding)) {
if (!boundElements.AppendObject(binding->GetBoundElement())) {
- bindings.RemoveElementAt(bindings.Length() - 1);
+ bindings.RemoveLastElement();
}
}
}
uint32_t i, count = bindings.Length();
for (i = 0; i < count; ++i) {
bindings[i]->ExecuteDetachedHandler();
}
--- a/dom/xslt/base/txNamespaceMap.cpp
+++ b/dom/xslt/base/txNamespaceMap.cpp
@@ -52,17 +52,17 @@ txNamespaceMap::mapNamespace(nsAtom* aPr
}
// New mapping
if (!mPrefixes.AppendElement(prefix)) {
return NS_ERROR_OUT_OF_MEMORY;
}
if (mNamespaces.AppendElement(nsId) == nullptr) {
- mPrefixes.RemoveElementAt(mPrefixes.Length() - 1);
+ mPrefixes.RemoveLastElement();
return NS_ERROR_OUT_OF_MEMORY;
}
return NS_OK;
}
int32_t
--- a/dom/xslt/xslt/txExecutionState.cpp
+++ b/dom/xslt/xslt/txExecutionState.cpp
@@ -391,17 +391,17 @@ txExecutionState::pushTemplateRule(txSty
rule->mModeLocalName = aMode.mLocalName;
rule->mParams = aParams;
}
void
txExecutionState::popTemplateRule()
{
NS_PRECONDITION(!mTemplateRules.IsEmpty(), "No rules to pop");
- mTemplateRules.RemoveElementAt(mTemplateRules.Length() - 1);
+ mTemplateRules.RemoveLastElement();
}
txIEvalContext*
txExecutionState::getEvalContext()
{
return mEvalContext;
}
@@ -529,13 +529,12 @@ txExecutionState::pushParamMap(txParamet
mParamStack.AppendElement(mTemplateParams.forget());
mTemplateParams = aParams;
}
already_AddRefed<txParameterMap>
txExecutionState::popParamMap()
{
RefPtr<txParameterMap> oldParams = mTemplateParams.forget();
- mTemplateParams = mParamStack.LastElement();
- mParamStack.RemoveElementAt(mParamStack.Length() - 1);
+ mTemplateParams = mParamStack.PopLastElement();
return oldParams.forget();
}
--- a/extensions/spellcheck/src/mozInlineSpellWordUtil.cpp
+++ b/extensions/spellcheck/src/mozInlineSpellWordUtil.cpp
@@ -840,17 +840,17 @@ mozInlineSpellWordUtil::BuildSoftText()
int32_t len = lastOffsetInNode - firstOffsetInNode;
mSoftTextDOMMapping.AppendElement(
DOMTextMapping(NodeOffset(node, firstOffsetInNode), mSoftText.Length(), len));
bool ok = textFragment->AppendTo(mSoftText, firstOffsetInNode, len,
mozilla::fallible);
if (!ok) {
// probably out of memory, remove from mSoftTextDOMMapping
- mSoftTextDOMMapping.RemoveElementAt(mSoftTextDOMMapping.Length() - 1);
+ mSoftTextDOMMapping.RemoveLastElement();
exit = true;
}
}
firstOffsetInNode = 0;
}
if (exit)
--- a/gfx/gl/GLTextureImage.cpp
+++ b/gfx/gl/GLTextureImage.cpp
@@ -455,17 +455,17 @@ void TiledTextureImage::Resize(const gfx
mImages.RemoveElementAt(i);
}
}
}
// Prune any unused tiles at the end of the store.
unsigned int length = mImages.Length();
for (; i < length; i++)
- mImages.RemoveElementAt(mImages.Length()-1);
+ mImages.RemoveLastElement();
// Reset tile-store properties.
mRows = rows;
mColumns = columns;
mSize = aSize;
mTextureState = Allocated;
mCurrentImage = 0;
}
--- a/gfx/thebes/gfxContext.cpp
+++ b/gfx/thebes/gfxContext.cpp
@@ -165,17 +165,17 @@ gfxContext::Restore()
"Save() been called. you may consider to remove this pair of "
"gfxContext::Save/Restore.");
#endif
for (unsigned int c = 0; c < CurrentState().pushedClips.Length(); c++) {
mDT->PopClip();
}
- mStateStack.RemoveElementAt(mStateStack.Length() - 1);
+ mStateStack.RemoveLastElement();
mDT = CurrentState().drawTarget;
ChangeTransform(CurrentState().transform, false);
}
// drawing
void
@@ -604,17 +604,17 @@ gfxContext::Clip()
}
}
void
gfxContext::PopClip()
{
MOZ_ASSERT(CurrentState().pushedClips.Length() > 0);
- CurrentState().pushedClips.RemoveElementAt(CurrentState().pushedClips.Length() - 1);
+ CurrentState().pushedClips.RemoveLastElement();
mDT->PopClip();
}
gfxRect
gfxContext::GetClipExtents(ClipExtentsSpace aSpace) const
{
Rect rect = GetAzureDeviceSpaceClipBounds();
--- a/gfx/vr/gfxVRPuppet.cpp
+++ b/gfx/vr/gfxVRPuppet.cpp
@@ -743,17 +743,17 @@ VRSystemManagerPuppet::Enumerate()
while (mPuppetHMDs.Length() < mPuppetDisplayCount) {
VRDisplayPuppet* puppetDisplay = new VRDisplayPuppet();
uint32_t deviceID = mPuppetHMDs.Length();
puppetDisplay->SetDisplayInfo(mPuppetDisplayInfo[deviceID]);
puppetDisplay->SetSensorState(mPuppetDisplaySensorState[deviceID]);
mPuppetHMDs.AppendElement(puppetDisplay);
}
while (mPuppetHMDs.Length() > mPuppetDisplayCount) {
- mPuppetHMDs.RemoveElementAt(mPuppetHMDs.Length() - 1);
+ mPuppetHMDs.RemoveLastElement();
}
}
void
VRSystemManagerPuppet::SetPuppetDisplayInfo(const uint32_t& aDeviceID,
const VRDisplayInfo& aDisplayInfo)
{
if (aDeviceID >= mPuppetDisplayCount) {
--- a/image/DecodePool.cpp
+++ b/image/DecodePool.cpp
@@ -222,18 +222,17 @@ private:
~DecodePoolImpl() { }
bool CreateThread();
Work PopWorkFromQueue(nsTArray<RefPtr<IDecodingTask>>& aQueue)
{
Work work;
work.mType = Work::Type::TASK;
- work.mTask = aQueue.LastElement().forget();
- aQueue.RemoveElementAt(aQueue.Length() - 1);
+ work.mTask = aQueue.PopLastElement();
return work;
}
Work CreateShutdownWork() const
{
Work work;
work.mType = Work::Type::SHUTDOWN;
--- a/image/imgLoader.cpp
+++ b/image/imgLoader.cpp
@@ -1020,17 +1020,17 @@ imgCacheQueue::Remove(imgCacheEntry* ent
mSize -= mQueue[index]->GetDataSize();
// If the queue is clean and this is the first entry,
// then we can efficiently remove the entry without
// dirtying the sort order.
if (!IsDirty() && index == 0) {
std::pop_heap(mQueue.begin(), mQueue.end(),
imgLoader::CompareCacheEntries);
- mQueue.RemoveElementAt(mQueue.Length() - 1);
+ mQueue.RemoveLastElement();
return;
}
// Remove from the middle of the list. This potentially
// breaks the binary heap sort order.
mQueue.RemoveElementAt(index);
// If we only have one entry or the queue is empty, though,
@@ -1066,18 +1066,17 @@ imgCacheQueue::Pop()
if (mQueue.IsEmpty()) {
return nullptr;
}
if (IsDirty()) {
Refresh();
}
std::pop_heap(mQueue.begin(), mQueue.end(), imgLoader::CompareCacheEntries);
- RefPtr<imgCacheEntry> entry = Move(mQueue.LastElement());
- mQueue.RemoveElementAt(mQueue.Length() - 1);
+ RefPtr<imgCacheEntry> entry = mQueue.PopLastElement();
mSize -= entry->GetDataSize();
return entry.forget();
}
void
imgCacheQueue::Refresh()
{
--- a/ipc/mscom/Utils.cpp
+++ b/ipc/mscom/Utils.cpp
@@ -335,18 +335,17 @@ IsInterfaceEqualToOrInheritedFrom(REFIID
typeInfos.AppendElement(Move(typeInfo));
}
/**
* The main loop of this function searches the hierarchy of aInterface's
* parent interfaces, searching for aFrom.
*/
while (!typeInfos.IsEmpty()) {
- RefPtr<ITypeInfo> curTypeInfo(Move(typeInfos.LastElement()));
- typeInfos.RemoveElementAt(typeInfos.Length() - 1);
+ RefPtr<ITypeInfo> curTypeInfo(typeInfos.PopLastElement());
TYPEATTR* typeAttr = nullptr;
HRESULT hr = curTypeInfo->GetTypeAttr(&typeAttr);
if (FAILED(hr)) {
break;
}
bool isFromParentVtable = IsVtableIndexFromParentInterface(typeAttr,
--- a/layout/base/PresShell.cpp
+++ b/layout/base/PresShell.cpp
@@ -2690,18 +2690,17 @@ PresShell::FrameNeedsReflow(nsIFrame *aF
}
}
#endif
AutoTArray<nsIFrame*, 4> subtrees;
subtrees.AppendElement(aFrame);
do {
- nsIFrame *subtreeRoot = subtrees.ElementAt(subtrees.Length() - 1);
- subtrees.RemoveElementAt(subtrees.Length() - 1);
+ nsIFrame *subtreeRoot = subtrees.PopLastElement();
// Grab |wasDirty| now so we can go ahead and update the bits on
// subtreeRoot.
bool wasDirty = NS_SUBTREE_DIRTY(subtreeRoot);
subtreeRoot->AddStateBits(aBitToAdd);
// Determine whether we need to keep looking for the next ancestor
// reflow root if subtreeRoot itself is a reflow root.
@@ -2741,18 +2740,17 @@ PresShell::FrameNeedsReflow(nsIFrame *aF
// Mark all descendants dirty (using an nsTArray stack rather than
// recursion).
// Note that ReflowInput::InitResizeFlags has some similar
// code; see comments there for how and why it differs.
AutoTArray<nsIFrame*, 32> stack;
stack.AppendElement(subtreeRoot);
do {
- nsIFrame *f = stack.ElementAt(stack.Length() - 1);
- stack.RemoveElementAt(stack.Length() - 1);
+ nsIFrame *f = stack.PopLastElement();
if (f->IsPlaceholderFrame()) {
nsIFrame *oof = nsPlaceholderFrame::GetRealFrameForPlaceholder(f);
if (!nsLayoutUtils::IsProperAncestorFrame(subtreeRoot, oof)) {
// We have another distinct subtree we need to mark.
subtrees.AppendElement(oof);
}
}
--- a/layout/base/nsLayoutUtils.cpp
+++ b/layout/base/nsLayoutUtils.cpp
@@ -3270,17 +3270,17 @@ static bool gDumpEventList = false;
// maintaining a single paint count, we need a stack.
StaticAutoPtr<nsTArray<int>> gPaintCountStack;
struct AutoNestedPaintCount {
AutoNestedPaintCount() {
gPaintCountStack->AppendElement(0);
}
~AutoNestedPaintCount() {
- gPaintCountStack->RemoveElementAt(gPaintCountStack->Length() - 1);
+ gPaintCountStack->RemoveLastElement();
}
};
#endif
nsIFrame*
nsLayoutUtils::GetFrameForPoint(nsIFrame* aFrame, nsPoint aPt, uint32_t aFlags)
{
@@ -5823,29 +5823,27 @@ nsLayoutUtils::ComputeBSizeDependentValu
nsLayoutUtils::MarkDescendantsDirty(nsIFrame *aSubtreeRoot)
{
AutoTArray<nsIFrame*, 4> subtrees;
subtrees.AppendElement(aSubtreeRoot);
// dirty descendants, iterating over subtrees that may include
// additional subtrees associated with placeholders
do {
- nsIFrame *subtreeRoot = subtrees.ElementAt(subtrees.Length() - 1);
- subtrees.RemoveElementAt(subtrees.Length() - 1);
+ nsIFrame *subtreeRoot = subtrees.PopLastElement();
// Mark all descendants dirty (using an nsTArray stack rather than
// recursion).
// Note that ReflowInput::InitResizeFlags has some similar
// code; see comments there for how and why it differs.
AutoTArray<nsIFrame*, 32> stack;
stack.AppendElement(subtreeRoot);
do {
- nsIFrame *f = stack.ElementAt(stack.Length() - 1);
- stack.RemoveElementAt(stack.Length() - 1);
+ nsIFrame *f = stack.PopLastElement();
f->MarkIntrinsicISizesDirty();
if (f->IsPlaceholderFrame()) {
nsIFrame *oof = nsPlaceholderFrame::GetRealFrameForPlaceholder(f);
if (!nsLayoutUtils::IsProperAncestorFrame(subtreeRoot, oof)) {
// We have another distinct subtree we need to mark.
subtrees.AppendElement(oof);
@@ -5867,18 +5865,17 @@ nsLayoutUtils::MarkDescendantsDirty(nsIF
/* static */
void
nsLayoutUtils::MarkIntrinsicISizesDirtyIfDependentOnBSize(nsIFrame* aFrame)
{
AutoTArray<nsIFrame*, 32> stack;
stack.AppendElement(aFrame);
do {
- nsIFrame* f = stack.ElementAt(stack.Length() - 1);
- stack.RemoveElementAt(stack.Length() - 1);
+ nsIFrame* f = stack.PopLastElement();
if (!f->HasAnyStateBits(
NS_FRAME_DESCENDANT_INTRINSIC_ISIZE_DEPENDS_ON_BSIZE)) {
continue;
}
f->MarkIntrinsicISizesDirty();
for (nsIFrame::ChildListIterator lists(f); !lists.IsDone(); lists.Next()) {
--- a/layout/base/nsStyleChangeList.h
+++ b/layout/base/nsStyleChangeList.h
@@ -46,17 +46,17 @@ public:
~nsStyleChangeList() { MOZ_COUNT_DTOR(nsStyleChangeList); }
void AppendChange(nsIFrame* aFrame, nsIContent* aContent, nsChangeHint aHint);
// Starting from the end of the list, removes all changes until the list is
// empty or an element with |mContent != aContent| is found.
void PopChangesForContent(nsIContent* aContent)
{
while (!IsEmpty() && LastElement().mContent == aContent) {
- RemoveElementAt(Length() - 1);
+ RemoveLastElement();
}
}
bool IsGecko() const { return mType == mozilla::StyleBackendType::Gecko; }
bool IsServo() const { return mType == mozilla::StyleBackendType::Servo; }
private:
mozilla::StyleBackendType mType;
--- a/layout/generic/ReflowInput.cpp
+++ b/layout/generic/ReflowInput.cpp
@@ -647,18 +647,17 @@ ReflowInput::InitResizeFlags(nsPresConte
// need to because we're actually doing something that cares about
// frame tree geometry (the width on an ancestor) rather than
// style.
AutoTArray<nsIFrame*, 32> stack;
stack.AppendElement(mFrame);
do {
- nsIFrame *f = stack.ElementAt(stack.Length() - 1);
- stack.RemoveElementAt(stack.Length() - 1);
+ nsIFrame *f = stack.PopLastElement();
nsIFrame::ChildListIterator lists(f);
for (; !lists.IsDone(); lists.Next()) {
nsFrameList::Enumerator childFrames(lists.CurrentList());
for (; !childFrames.AtEnd(); childFrames.Next()) {
nsIFrame* kid = childFrames.get();
kid->MarkIntrinsicISizesDirty();
stack.AppendElement(kid);
--- a/layout/generic/TextDrawTarget.h
+++ b/layout/generic/TextDrawTarget.h
@@ -180,17 +180,17 @@ public:
PushClipRect(const Rect &aRect) override {
LayoutDeviceRect rect = LayoutDeviceRect::FromUnknownRect(aRect);
rect = rect.Intersect(mClipStack.LastElement());
mClipStack.AppendElement(rect);
}
void
PopClip() override {
- mClipStack.RemoveElementAt(mClipStack.Length() - 1);
+ mClipStack.RemoveLastElement();
}
void
AppendShadow(const wr::Shadow& aShadow)
{
mBuilder.PushShadow(mBoundsRect, ClipRect(), mBackfaceVisible, aShadow);
mHasShadows = true;
}
--- a/layout/generic/nsFrame.cpp
+++ b/layout/generic/nsFrame.cpp
@@ -12204,17 +12204,17 @@ DR_FrameTreeNode* DR_State::CreateTreeNo
FindMatchingRule(*newNode);
newNode->mIndent = mIndent;
if (newNode->mDisplay || mIndentUndisplayedFrames) {
++mIndent;
}
if (lastLeaf && (lastLeaf == parentNode)) {
- mFrameTreeLeaves.RemoveElementAt(mFrameTreeLeaves.Length() - 1);
+ mFrameTreeLeaves.RemoveLastElement();
}
mFrameTreeLeaves.AppendElement(newNode);
mCount++;
return newNode;
}
void DR_State::PrettyUC(nscoord aSize,
--- a/layout/painting/RetainedDisplayListBuilder.cpp
+++ b/layout/painting/RetainedDisplayListBuilder.cpp
@@ -194,17 +194,17 @@ template<typename T>
void SwapAndRemove(nsTArray<T>& aArray, uint32_t aIndex)
{
if (aIndex != (aArray.Length() - 1)) {
T last = aArray.LastElement();
aArray.LastElement() = aArray[aIndex];
aArray[aIndex] = last;
}
- aArray.RemoveElementAt(aArray.Length() - 1);
+ aArray.RemoveLastElement();
}
static bool
MergeFrameRects(nsDisplayLayerEventRegions* aOldItem,
nsDisplayLayerEventRegions* aNewItem,
nsDisplayLayerEventRegions::FrameRects nsDisplayLayerEventRegions::*aRectList,
nsTArray<nsIFrame*>& aAddedFrames)
{
--- a/layout/painting/nsDisplayList.h
+++ b/layout/painting/nsDisplayList.h
@@ -6778,18 +6778,17 @@ private:
void ResolveFlattening()
{
// Handle the case where we reach the end of a nested list, or the current
// item should start a new nested list. Repeat this until we find an actual
// item, or the very end of the outer list.
while (AtEndOfNestedList() || ShouldFlattenNextItem()) {
if (AtEndOfNestedList()) {
// Pop the last item off the stack.
- mNext = mStack.LastElement();
- mStack.RemoveElementAt(mStack.Length() - 1);
+ mNext = mStack.PopLastElement();
// We stored the item that was flattened, so advance to the next.
mNext = mNext->GetAbove();
} else {
// This item wants to be flattened. Store the current item on the stack,
// and use the first item in the child list instead.
mStack.AppendElement(mNext);
nsDisplayList* childItems = mNext->GetSameCoordinateSystemChildren();
mNext = childItems->GetBottom();
--- a/layout/style/FontFaceSet.cpp
+++ b/layout/style/FontFaceSet.cpp
@@ -1224,17 +1224,17 @@ FontFaceSet::FindOrCreateUserFontEntryFr
// unknown format specified, mark to distinguish from the
// case where no format hints are specified
face->mFormatFlags |= gfxUserFontSet::FLAG_FORMAT_UNKNOWN;
}
i++;
}
if (!face->mURI) {
// if URI not valid, omit from src array
- srcArray.RemoveElementAt(srcArray.Length() - 1);
+ srcArray.RemoveLastElement();
NS_WARNING("null url in @font-face rule");
continue;
}
break;
}
default:
NS_ASSERTION(unit == eCSSUnit_Local_Font || unit == eCSSUnit_URL,
"strange unit type in font-face src array");
--- a/layout/style/nsFontFaceUtils.cpp
+++ b/layout/style/nsFontFaceUtils.cpp
@@ -110,26 +110,24 @@ nsFontFaceUtils::MarkDirtyForFontChange(
AutoTArray<nsIFrame*, 4> subtrees;
subtrees.AppendElement(aSubtreeRoot);
nsIPresShell* ps = aSubtreeRoot->PresShell();
// check descendants, iterating over subtrees that may include
// additional subtrees associated with placeholders
do {
- nsIFrame* subtreeRoot = subtrees.ElementAt(subtrees.Length() - 1);
- subtrees.RemoveElementAt(subtrees.Length() - 1);
+ nsIFrame* subtreeRoot = subtrees.PopLastElement();
// Check all descendants to see if they use the font
AutoTArray<nsIFrame*, 32> stack;
stack.AppendElement(subtreeRoot);
do {
- nsIFrame* f = stack.ElementAt(stack.Length() - 1);
- stack.RemoveElementAt(stack.Length() - 1);
+ nsIFrame* f = stack.PopLastElement();
// if this frame uses the font, mark its descendants dirty
// and skip checking its children
if (FrameUsesFont(f, aFont)) {
ScheduleReflow(ps, f);
} else {
if (f->IsPlaceholderFrame()) {
nsIFrame* oof = nsPlaceholderFrame::GetRealFrameForPlaceholder(f);
--- a/netwerk/cache2/CacheIndexIterator.cpp
+++ b/netwerk/cache2/CacheIndexIterator.cpp
@@ -39,17 +39,17 @@ CacheIndexIterator::GetNextHash(SHA1Sum:
}
if (!mRecords.Length()) {
CloseInternal(NS_ERROR_NOT_AVAILABLE);
return mStatus;
}
memcpy(aHash, mRecords[mRecords.Length() - 1]->mHash, sizeof(SHA1Sum::Hash));
- mRecords.RemoveElementAt(mRecords.Length() - 1);
+ mRecords.RemoveLastElement();
return NS_OK;
}
nsresult
CacheIndexIterator::Close()
{
LOG(("CacheIndexIterator::Close() [this=%p]", this));
--- a/netwerk/protocol/http/nsHttpChannel.cpp
+++ b/netwerk/protocol/http/nsHttpChannel.cpp
@@ -8251,18 +8251,17 @@ nsHttpChannel::OnRedirectVerifyCallback(
mWaitingForRedirectCallback = false;
if (mCanceled && NS_SUCCEEDED(result))
result = NS_BINDING_ABORTED;
for (uint32_t i = mRedirectFuncStack.Length(); i > 0;) {
--i;
// Pop the last function pushed to the stack
- nsContinueRedirectionFunc func = mRedirectFuncStack[i];
- mRedirectFuncStack.RemoveElementAt(mRedirectFuncStack.Length() - 1);
+ nsContinueRedirectionFunc func = mRedirectFuncStack.PopLastElement();
// Call it with the result we got from the callback or the deeper
// function call.
result = (this->*func)(result);
// If a new function has been pushed to the stack and placed us in the
// waiting state, we need to break the chain and wait for the callback
// again.
--- a/parser/html/nsHtml5Highlighter.cpp
+++ b/parser/html/nsHtml5Highlighter.cpp
@@ -705,17 +705,17 @@ nsHtml5Highlighter::Push(nsAtom* aName,
mOpQueue.AppendElement()->Init(eTreeOpAppend, elt, CurrentNode());
mStack.AppendElement(elt);
}
void
nsHtml5Highlighter::Pop()
{
NS_PRECONDITION(mStack.Length() >= 2, "Popping when stack too short.");
- mStack.RemoveElementAt(mStack.Length() - 1);
+ mStack.RemoveLastElement();
}
void
nsHtml5Highlighter::AppendCharacters(const char16_t* aBuffer,
int32_t aStart,
int32_t aLength)
{
NS_PRECONDITION(aBuffer, "Null buffer");
--- a/toolkit/components/places/History.cpp
+++ b/toolkit/components/places/History.cpp
@@ -3243,17 +3243,17 @@ History::UpdatePlaces(JS::Handle<JS::Val
nsINavHistoryService::TRANSITION_RELOAD);
data.SetTransitionType(transitionType);
data.hidden = GetHiddenState(false, transitionType);
// If the visit is an embed visit, we do not actually add it to the
// database.
if (transitionType == nsINavHistoryService::TRANSITION_EMBED) {
StoreAndNotifyEmbedVisit(data, aCallback);
- visitData.RemoveElementAt(visitData.Length() - 1);
+ visitData.RemoveLastElement();
initialUpdatedCount++;
continue;
}
// The referrer is optional.
nsCOMPtr<nsIURI> referrer = GetURIFromJSObject(aCtx, visit,
"referrerURI");
if (referrer) {
--- a/widget/cocoa/TextInputHandler.h
+++ b/widget/cocoa/TextInputHandler.h
@@ -874,18 +874,17 @@ protected:
/**
* RemoveCurrentKeyEvent() removes the current key event from
* mCurrentKeyEvents.
*/
void RemoveCurrentKeyEvent()
{
NS_ASSERTION(mCurrentKeyEvents.Length() > 0,
"RemoveCurrentKeyEvent() is called unexpectedly");
- KeyEventState* keyEvent = GetCurrentKeyEvent();
- mCurrentKeyEvents.RemoveElementAt(mCurrentKeyEvents.Length() - 1);
+ KeyEventState* keyEvent = mCurrentKeyEvents.PopLastElement();
if (keyEvent == &mFirstKeyEvent) {
keyEvent->Clear();
} else {
delete keyEvent;
}
}
/**
--- a/widget/windows/TSFTextStore.cpp
+++ b/widget/windows/TSFTextStore.cpp
@@ -5126,17 +5126,17 @@ TSFTextStore::RecordCompositionStartActi
// compositionend and start composition normally.
if (!aPreserveSelection &&
WasTextInsertedWithoutCompositionAt(aStart, aLength)) {
const PendingAction& pendingCompositionEnd = mPendingActions.LastElement();
const PendingAction& pendingCompositionStart =
mPendingActions[mPendingActions.Length() - 2];
contentForTSF.RestoreCommittedComposition(
aComposition, pendingCompositionStart, pendingCompositionEnd);
- mPendingActions.RemoveElementAt(mPendingActions.Length() - 1);
+ mPendingActions.RemoveLastElement();
MOZ_LOG(sTextStoreLog, LogLevel::Info,
("0x%p TSFTextStore::RecordCompositionStartAction() "
"succeeded: restoring the committed string as composing string, "
"mComposition={ mStart=%ld, mString.Length()=%ld, "
"mSelectionForTSF={ acpStart=%ld, acpEnd=%ld, style.ase=%s, "
"style.fInterimChar=%s } }",
this, mComposition.mStart, mComposition.mString.Length(),
mSelectionForTSF.StartOffset(), mSelectionForTSF.EndOffset(),
--- a/xpcom/threads/DeadlockDetector.h
+++ b/xpcom/threads/DeadlockDetector.h
@@ -342,17 +342,17 @@ public:
index_type i = 0;
size_type len = aStart->mOrderedLT.Length();
for (auto it = aStart->mOrderedLT.Elements(); i < len; ++i, ++it) {
aChain->AppendElement((*it)->mResource);
if (GetDeductionChain_Helper(*it, aTarget, aChain)) {
return true;
}
- aChain->RemoveElementAt(aChain->Length() - 1);
+ aChain->RemoveLastElement();
}
return false;
}
/**
* The partial order on resource acquisitions used by the deadlock
* detector.
*/
--- a/xpcom/threads/ThreadEventQueue.cpp
+++ b/xpcom/threads/ThreadEventQueue.cpp
@@ -252,17 +252,17 @@ ThreadEventQueue<InnerQueueT>::PopEventQ
// Move events from the old queue to the new one.
nsCOMPtr<nsIRunnable> event;
EventPriority prio;
while ((event = item.mQueue->GetEvent(&prio, lock))) {
prevQueue->PutEvent(event.forget(), prio, lock);
}
- mNestedQueues.RemoveElementAt(mNestedQueues.Length() - 1);
+ mNestedQueues.RemoveLastElement();
}
template<class InnerQueueT>
already_AddRefed<nsIThreadObserver>
ThreadEventQueue<InnerQueueT>::GetObserver()
{
MutexAutoLock lock(mLock);
return do_AddRef(mObserver);
--- a/xpcom/threads/TimerThread.cpp
+++ b/xpcom/threads/TimerThread.cpp
@@ -734,17 +734,17 @@ TimerThread::RemoveLeadingCanceledTimers
}
void
TimerThread::RemoveFirstTimerInternal()
{
mMonitor.AssertCurrentThreadOwns();
MOZ_ASSERT(!mTimers.IsEmpty());
std::pop_heap(mTimers.begin(), mTimers.end(), Entry::UniquePtrLessThan);
- mTimers.RemoveElementAt(mTimers.Length() - 1);
+ mTimers.RemoveLastElement();
}
already_AddRefed<nsTimerImpl>
TimerThread::PostTimerEvent(already_AddRefed<nsTimerImpl> aTimerRef)
{
mMonitor.AssertCurrentThreadOwns();
RefPtr<nsTimerImpl> timer(aTimerRef);