Title: [155168] trunk/Source/WebCore
- Revision
- 155168
- Author
- [email protected]
- Date
- 2013-09-05 18:34:05 -0700 (Thu, 05 Sep 2013)
Log Message
FrameLoader: Convert three little loops to using Vector<Ref<Frame>>.
<https://webkit.org/b/120798>
Reviewed by Antti Koivisto.
Also apply a bit of inline capacity + reserveInitialCapacity + uncheckedAppend
in FrameLoader::detachChildren() since we know the final size from the start.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::detachChildren):
(WebCore::FrameLoader::checkLoadComplete):
(WebCore::FrameLoader::shouldClose):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (155167 => 155168)
--- trunk/Source/WebCore/ChangeLog 2013-09-06 01:24:45 UTC (rev 155167)
+++ trunk/Source/WebCore/ChangeLog 2013-09-06 01:34:05 UTC (rev 155168)
@@ -1,5 +1,20 @@
2013-09-05 Andreas Kling <[email protected]>
+ FrameLoader: Convert three little loops to using Vector<Ref<Frame>>.
+ <https://webkit.org/b/120798>
+
+ Reviewed by Antti Koivisto.
+
+ Also apply a bit of inline capacity + reserveInitialCapacity + uncheckedAppend
+ in FrameLoader::detachChildren() since we know the final size from the start.
+
+ * loader/FrameLoader.cpp:
+ (WebCore::FrameLoader::detachChildren):
+ (WebCore::FrameLoader::checkLoadComplete):
+ (WebCore::FrameLoader::shouldClose):
+
+2013-09-05 Andreas Kling <[email protected]>
+
ContainerNode: Apply Ref<T> to some popular DOM functions.
<https://webkit.org/b/120800>
Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (155167 => 155168)
--- trunk/Source/WebCore/loader/FrameLoader.cpp 2013-09-06 01:24:45 UTC (rev 155167)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp 2013-09-06 01:34:05 UTC (rev 155168)
@@ -2318,14 +2318,12 @@
void FrameLoader::detachChildren()
{
- typedef Vector<RefPtr<Frame> > FrameVector;
- FrameVector childrenToDetach;
- childrenToDetach.reserveCapacity(m_frame.tree().childCount());
+ Vector<Ref<Frame>, 16> childrenToDetach;
+ childrenToDetach.reserveInitialCapacity(m_frame.tree().childCount());
for (Frame* child = m_frame.tree().lastChild(); child; child = child->tree().previousSibling())
- childrenToDetach.append(child);
- FrameVector::iterator end = childrenToDetach.end();
- for (FrameVector::iterator it = childrenToDetach.begin(); it != end; ++it)
- (*it)->loader().detachFromParent();
+ childrenToDetach.uncheckedAppend(*child);
+ for (unsigned i = 0; i < childrenToDetach.size(); ++i)
+ childrenToDetach[i]->loader().detachFromParent();
}
void FrameLoader::closeAndRemoveChild(Frame* child)
@@ -2348,16 +2346,18 @@
m_shouldCallCheckLoadComplete = false;
+ if (!m_frame.page())
+ return;
+
// FIXME: Always traversing the entire frame tree is a bit inefficient, but
// is currently needed in order to null out the previous history item for all frames.
- if (Page* page = m_frame.page()) {
- Vector<RefPtr<Frame>, 10> frames;
- for (RefPtr<Frame> frame = &page->mainFrame(); frame; frame = frame->tree().traverseNext())
- frames.append(frame);
- // To process children before their parents, iterate the vector backwards.
- for (size_t i = frames.size(); i; --i)
- frames[i - 1]->loader().checkLoadCompleteForThisFrame();
- }
+ Vector<Ref<Frame>, 16> frames;
+ for (Frame* frame = &m_frame.page()->mainFrame(); frame; frame = frame->tree().traverseNext())
+ frames.append(*frame);
+
+ // To process children before their parents, iterate the vector backwards.
+ for (unsigned i = frames.size(); i; --i)
+ frames[i - 1]->loader().checkLoadCompleteForThisFrame();
}
int FrameLoader::numPendingOrLoadingRequests(bool recurse) const
@@ -2722,10 +2722,10 @@
return true;
// Store all references to each subframe in advance since beforeunload's event handler may modify frame
- Vector<RefPtr<Frame> > targetFrames;
- targetFrames.append(&m_frame);
+ Vector<Ref<Frame>, 16> targetFrames;
+ targetFrames.append(m_frame);
for (Frame* child = m_frame.tree().firstChild(); child; child = child->tree().traverseNext(&m_frame))
- targetFrames.append(child);
+ targetFrames.append(*child);
bool shouldClose = false;
{
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes