| Index: Source/platform/text/SegmentedString.h
|
| diff --git a/Source/platform/text/SegmentedString.h b/Source/platform/text/SegmentedString.h
|
| index 4c885f552d3645c013c9d83fef34b3f1ed74d00c..88ffb605caae433f8f3e524b58b758c778e92196 100644
|
| --- a/Source/platform/text/SegmentedString.h
|
| +++ b/Source/platform/text/SegmentedString.h
|
| @@ -125,14 +125,21 @@ public:
|
| return incrementAndGetCurrentChar16();
|
| }
|
|
|
| -public:
|
| + ALWAYS_INLINE bool haveOneCharacterLeft() const
|
| + {
|
| + return m_length == 1;
|
| + }
|
| +
|
| + ALWAYS_INLINE void decrementLength() { --m_length; }
|
| +
|
| + ALWAYS_INLINE int length() const { return m_length; }
|
| +
|
| +private:
|
| union {
|
| const LChar* string8Ptr;
|
| const UChar* string16Ptr;
|
| } m_data;
|
| int m_length;
|
| -
|
| -private:
|
| bool m_doNotExcludeLineNumbers;
|
| bool m_is8Bit;
|
| String m_string;
|
| @@ -167,7 +174,7 @@ public:
|
| , m_empty(!str.length())
|
| , m_fastPathFlags(NoFastPath)
|
| {
|
| - if (m_currentString.m_length)
|
| + if (m_currentString.length())
|
| m_currentChar = m_currentString.getCurrentChar();
|
| updateAdvanceFunctionPointers();
|
| }
|
| @@ -211,10 +218,9 @@ public:
|
| {
|
| if (m_fastPathFlags & Use8BitAdvance) {
|
| ASSERT(!m_pushedChar1);
|
| - bool haveOneCharacterLeft = (--m_currentString.m_length == 1);
|
| m_currentChar = m_currentString.incrementAndGetCurrentChar8();
|
| -
|
| - if (!haveOneCharacterLeft)
|
| + m_currentString.decrementLength();
|
| + if (!m_currentString.haveOneCharacterLeft())
|
| return;
|
|
|
| updateSlowCaseFunctionPointers();
|
| @@ -231,12 +237,9 @@ public:
|
| ASSERT(!m_pushedChar1);
|
|
|
| bool haveNewLine = (m_currentChar == '\n') & !!(m_fastPathFlags & Use8BitAdvanceAndUpdateLineNumbers);
|
| - bool haveOneCharacterLeft = (--m_currentString.m_length == 1);
|
| -
|
| m_currentChar = m_currentString.incrementAndGetCurrentChar8();
|
| -
|
| - if (!(haveNewLine | haveOneCharacterLeft))
|
| - return;
|
| + m_currentString.decrementLength();
|
| + bool haveOneCharacterLeft = m_currentString.haveOneCharacterLeft();
|
|
|
| if (haveNewLine) {
|
| ++m_currentLine;
|
| @@ -273,7 +276,7 @@ public:
|
| void advancePastNewlineAndUpdateLineNumber()
|
| {
|
| ASSERT(currentChar() == '\n');
|
| - if (!m_pushedChar1 && m_currentString.m_length > 1) {
|
| + if (!m_pushedChar1 && m_currentString.length() > 1) {
|
| int newLineFlag = m_currentString.doNotExcludeLineNumbers();
|
| m_currentLine += newLineFlag;
|
| if (newLineFlag)
|
| @@ -336,14 +339,15 @@ private:
|
|
|
| void decrementAndCheckLength()
|
| {
|
| - ASSERT(m_currentString.m_length > 1);
|
| - if (--m_currentString.m_length == 1)
|
| + ASSERT(m_currentString.length() > 1);
|
| + m_currentString.decrementLength();
|
| + if (m_currentString.haveOneCharacterLeft())
|
| updateSlowCaseFunctionPointers();
|
| }
|
|
|
| void updateAdvanceFunctionPointers()
|
| {
|
| - if ((m_currentString.m_length > 1) && !m_pushedChar1) {
|
| + if ((m_currentString.length() > 1) && !m_pushedChar1) {
|
| if (m_currentString.is8Bit()) {
|
| m_advanceFunc = &SegmentedString::advance8;
|
| m_fastPathFlags = Use8BitAdvance;
|
| @@ -365,7 +369,7 @@ private:
|
| return;
|
| }
|
|
|
| - if (!m_currentString.m_length && !isComposite()) {
|
| + if (!m_currentString.length() && !isComposite()) {
|
| m_advanceFunc = &SegmentedString::advanceEmpty;
|
| m_fastPathFlags = NoFastPath;
|
| m_advanceAndUpdateLineNumberFunc = &SegmentedString::advanceEmpty;
|
| @@ -376,7 +380,7 @@ private:
|
|
|
| inline LookAheadResult lookAheadInline(const String& string, TextCaseSensitivity caseSensitivity)
|
| {
|
| - if (!m_pushedChar1 && string.length() <= static_cast<unsigned>(m_currentString.m_length)) {
|
| + if (!m_pushedChar1 && string.length() <= static_cast<unsigned>(m_currentString.length())) {
|
| String currentSubstring = m_currentString.currentSubString(string.length());
|
| if (currentSubstring.startsWith(string, caseSensitivity))
|
| return DidMatch;
|
|
|