| Index: Source/core/html/parser/InputStreamPreprocessor.h | 
| diff --git a/Source/core/html/parser/InputStreamPreprocessor.h b/Source/core/html/parser/InputStreamPreprocessor.h | 
| index 0d6ee30fad76133b7b890bc9e4ea88ce8a228350..a35711d704440a76f355490bb5459a7b3474e3dc 100644 | 
| --- a/Source/core/html/parser/InputStreamPreprocessor.h | 
| +++ b/Source/core/html/parser/InputStreamPreprocessor.h | 
| @@ -53,7 +53,6 @@ public: | 
| // characters in |source| (after collapsing \r\n, etc). | 
| ALWAYS_INLINE bool peek(SegmentedString& source) | 
| { | 
| -    PeekAgain: | 
| m_nextInputCharacter = source.currentChar(); | 
|  | 
| // Every branch in this function is expensive, so we have a | 
| @@ -65,6 +64,31 @@ public: | 
| m_skipNextNewLine = false; | 
| return true; | 
| } | 
| +        return processNextInputCharacter(source); | 
| +    } | 
| + | 
| +    // Returns whether there are more characters in |source| after advancing. | 
| +    ALWAYS_INLINE bool advance(SegmentedString& source) | 
| +    { | 
| +        source.advanceAndUpdateLineNumber(); | 
| +        if (source.isEmpty()) | 
| +            return false; | 
| +        return peek(source); | 
| +    } | 
| + | 
| +    bool skipNextNewLine() const { return m_skipNextNewLine; } | 
| + | 
| +    void reset(bool skipNextNewLine = false) | 
| +    { | 
| +        m_nextInputCharacter = '\0'; | 
| +        m_skipNextNewLine = skipNextNewLine; | 
| +    } | 
| + | 
| +private: | 
| +    bool processNextInputCharacter(SegmentedString& source) | 
| +    { | 
| +    ProcessAgain: | 
| +        ASSERT(m_nextInputCharacter == source.currentChar()); | 
|  | 
| if (m_nextInputCharacter == '\n' && m_skipNextNewLine) { | 
| m_skipNextNewLine = false; | 
| @@ -87,7 +111,8 @@ public: | 
| source.advancePastNonNewline(); | 
| if (source.isEmpty()) | 
| return false; | 
| -                    goto PeekAgain; | 
| +                    m_nextInputCharacter = source.currentChar(); | 
| +                    goto ProcessAgain; | 
| } | 
| m_nextInputCharacter = 0xFFFD; | 
| } | 
| @@ -95,24 +120,6 @@ public: | 
| return true; | 
| } | 
|  | 
| -    // Returns whether there are more characters in |source| after advancing. | 
| -    ALWAYS_INLINE bool advance(SegmentedString& source) | 
| -    { | 
| -        source.advanceAndUpdateLineNumber(); | 
| -        if (source.isEmpty()) | 
| -            return false; | 
| -        return peek(source); | 
| -    } | 
| - | 
| -    bool skipNextNewLine() const { return m_skipNextNewLine; } | 
| - | 
| -    void reset(bool skipNextNewLine = false) | 
| -    { | 
| -        m_nextInputCharacter = '\0'; | 
| -        m_skipNextNewLine = skipNextNewLine; | 
| -    } | 
| - | 
| -private: | 
| bool shouldTreatNullAsEndOfFileMarker(SegmentedString& source) const | 
| { | 
| return source.isClosed() && source.length() == 1; | 
|  |