Title: [103080] trunk/Source/WebCore
- Revision
- 103080
- Author
- an...@apple.com
- Date
- 2011-12-16 10:39:47 -0800 (Fri, 16 Dec 2011)
Log Message
https://bugs.webkit.org/show_bug.cgi?id=74677
Count ResourceLoadScheduler suspends/resumes
Reviewed by Andreas Kling.
Using boolean is not robust when there are multiple clients calling suspendPendingRequests/resumePendingRequests.
Increment and decrement suspend count instead of just setting/unsetting a boolean.
* loader/ResourceLoadScheduler.cpp:
(WebCore::ResourceLoadScheduler::ResourceLoadScheduler):
(WebCore::ResourceLoadScheduler::servePendingRequests):
(WebCore::ResourceLoadScheduler::suspendPendingRequests):
(WebCore::ResourceLoadScheduler::resumePendingRequests):
* loader/ResourceLoadScheduler.h:
(WebCore::ResourceLoadScheduler::isSuspendingPendingRequests):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (103079 => 103080)
--- trunk/Source/WebCore/ChangeLog 2011-12-16 18:27:13 UTC (rev 103079)
+++ trunk/Source/WebCore/ChangeLog 2011-12-16 18:39:47 UTC (rev 103080)
@@ -1,3 +1,22 @@
+2011-12-15 Antti Koivisto <an...@apple.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=74677
+ Count ResourceLoadScheduler suspends/resumes
+
+ Reviewed by Andreas Kling.
+
+ Using boolean is not robust when there are multiple clients calling suspendPendingRequests/resumePendingRequests.
+
+ Increment and decrement suspend count instead of just setting/unsetting a boolean.
+
+ * loader/ResourceLoadScheduler.cpp:
+ (WebCore::ResourceLoadScheduler::ResourceLoadScheduler):
+ (WebCore::ResourceLoadScheduler::servePendingRequests):
+ (WebCore::ResourceLoadScheduler::suspendPendingRequests):
+ (WebCore::ResourceLoadScheduler::resumePendingRequests):
+ * loader/ResourceLoadScheduler.h:
+ (WebCore::ResourceLoadScheduler::isSuspendingPendingRequests):
+
2011-12-16 Adam Klein <ad...@chromium.org>
Improve performance of ChildListMutationScope when no MutationObservers are present
Modified: trunk/Source/WebCore/loader/ResourceLoadScheduler.cpp (103079 => 103080)
--- trunk/Source/WebCore/loader/ResourceLoadScheduler.cpp 2011-12-16 18:27:13 UTC (rev 103079)
+++ trunk/Source/WebCore/loader/ResourceLoadScheduler.cpp 2011-12-16 18:39:47 UTC (rev 103080)
@@ -77,7 +77,7 @@
ResourceLoadScheduler::ResourceLoadScheduler()
: m_nonHTTPProtocolHost(new HostInformation(String(), maxRequestsInFlightForNonHTTPProtocols))
, m_requestTimer(this, &ResourceLoadScheduler::requestTimerFired)
- , m_isSuspendingPendingRequests(false)
+ , m_suspendPendingRequestsCount(0)
, m_isSerialLoadingEnabled(false)
{
#if REQUEST_MANAGEMENT_ENABLED
@@ -162,8 +162,8 @@
void ResourceLoadScheduler::servePendingRequests(ResourceLoadPriority minimumPriority)
{
- LOG(ResourceLoading, "ResourceLoadScheduler::servePendingRequests. m_isSuspendingPendingRequests=%d", m_isSuspendingPendingRequests);
- if (m_isSuspendingPendingRequests)
+ LOG(ResourceLoading, "ResourceLoadScheduler::servePendingRequests. m_suspendPendingRequestsCount=%d", m_suspendPendingRequestsCount);
+ if (isSuspendingPendingRequests())
return;
m_requestTimer.stop();
@@ -213,14 +213,15 @@
void ResourceLoadScheduler::suspendPendingRequests()
{
- ASSERT(!m_isSuspendingPendingRequests);
- m_isSuspendingPendingRequests = true;
+ ++m_suspendPendingRequestsCount;
}
void ResourceLoadScheduler::resumePendingRequests()
{
- ASSERT(m_isSuspendingPendingRequests);
- m_isSuspendingPendingRequests = false;
+ ASSERT(m_suspendPendingRequestsCount);
+ --m_suspendPendingRequestsCount;
+ if (m_suspendPendingRequestsCount)
+ return;
if (!m_hosts.isEmpty() || m_nonHTTPProtocolHost->hasRequests())
scheduleServePendingRequests();
}
Modified: trunk/Source/WebCore/loader/ResourceLoadScheduler.h (103079 => 103080)
--- trunk/Source/WebCore/loader/ResourceLoadScheduler.h 2011-12-16 18:27:13 UTC (rev 103079)
+++ trunk/Source/WebCore/loader/ResourceLoadScheduler.h 2011-12-16 18:39:47 UTC (rev 103080)
@@ -58,6 +58,7 @@
void crossOriginRedirectReceived(ResourceLoader*, const KURL& redirectURL);
void servePendingRequests(ResourceLoadPriority minimumPriority = ResourceLoadPriorityVeryLow);
+ bool isSuspendingPendingRequests() const { return !!m_suspendPendingRequestsCount; }
void suspendPendingRequests();
void resumePendingRequests();
@@ -110,7 +111,7 @@
Timer<ResourceLoadScheduler> m_requestTimer;
- bool m_isSuspendingPendingRequests;
+ unsigned m_suspendPendingRequestsCount;
bool m_isSerialLoadingEnabled;
};
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes