diff options
author | Ben Murdoch <benm@google.com> | 2011-05-24 11:24:40 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-06-02 09:53:15 +0100 |
commit | 81bc750723a18f21cd17d1b173cd2a4dda9cea6e (patch) | |
tree | 7a9e5ed86ff429fd347a25153107221543909b19 /Source/WebCore/html/parser/HTMLParserScheduler.h | |
parent | 94088a6d336c1dd80a1e734af51e96abcbb689a7 (diff) | |
download | external_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.zip external_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.tar.gz external_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.tar.bz2 |
Merge WebKit at r80534: Intial merge by Git
Change-Id: Ia7a83357124c9e1cdb1debf55d9661ec0bd09a61
Diffstat (limited to 'Source/WebCore/html/parser/HTMLParserScheduler.h')
-rw-r--r-- | Source/WebCore/html/parser/HTMLParserScheduler.h | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/Source/WebCore/html/parser/HTMLParserScheduler.h b/Source/WebCore/html/parser/HTMLParserScheduler.h index c415c62..9aa12eb 100644 --- a/Source/WebCore/html/parser/HTMLParserScheduler.h +++ b/Source/WebCore/html/parser/HTMLParserScheduler.h @@ -26,6 +26,7 @@ #ifndef HTMLParserScheduler_h #define HTMLParserScheduler_h +#include "NestingLevelIncrementer.h" #include "Timer.h" #include <wtf/CurrentTime.h> #include <wtf/PassOwnPtr.h> @@ -34,6 +35,21 @@ namespace WebCore { class HTMLDocumentParser; +class PumpSession : public NestingLevelIncrementer { +public: + PumpSession(unsigned& nestingLevel) + : NestingLevelIncrementer(nestingLevel) + , processedTokens(0) + , startTime(currentTime()) + , needsYield(false) + { + } + + int processedTokens; + double startTime; + bool needsYield; +}; + class HTMLParserScheduler { WTF_MAKE_NONCOPYABLE(HTMLParserScheduler); WTF_MAKE_FAST_ALLOCATED; public: @@ -43,34 +59,19 @@ public: } ~HTMLParserScheduler(); - struct PumpSession { - PumpSession() - : processedTokens(0) - , startTime(currentTime()) - { - } - - int processedTokens; - double startTime; - }; - // Inline as this is called after every token in the parser. - bool shouldContinueParsing(PumpSession& session) + void checkForYieldBeforeToken(PumpSession& session) { if (session.processedTokens > m_parserChunkSize) { session.processedTokens = 0; double elapsedTime = currentTime() - session.startTime; - if (elapsedTime > m_parserTimeLimit) { - // Schedule the parser to continue and yield from the parser. - m_continueNextChunkTimer.startOneShot(0); - return false; - } + if (elapsedTime > m_parserTimeLimit) + session.needsYield = true; } - ++session.processedTokens; - return true; } + void scheduleForResume(); bool isScheduledForResume() const { return m_isSuspendedWithActiveTimer || m_continueNextChunkTimer.isActive(); } void suspend(); |