Title: [295171] trunk/Source/WebCore/html/parser
- Revision
- 295171
- Author
- cdu...@apple.com
- Date
- 2022-06-02 22:41:49 -0700 (Thu, 02 Jun 2022)
Log Message
Optimize HTMLTokenizer::bufferASCIICharacter()
https://bugs.webkit.org/show_bug.cgi?id=241252
Reviewed by Yusuke Suzuki.
Optimize HTMLTokenizer::bufferASCIICharacter() by appending several characters
at once whenever possible.
* Source/WebCore/html/parser/HTMLTokenizer.cpp:
(WebCore::HTMLTokenizer::processToken):
* Source/WebCore/html/parser/HTMLTokenizer.h:
(WebCore::HTMLTokenizer::bufferCharacters):
Canonical link: https://commits.webkit.org/251255@main
Modified Paths
Diff
Modified: trunk/Source/WebCore/html/parser/HTMLTokenizer.cpp (295170 => 295171)
--- trunk/Source/WebCore/html/parser/HTMLTokenizer.cpp 2022-06-03 05:35:30 UTC (rev 295170)
+++ trunk/Source/WebCore/html/parser/HTMLTokenizer.cpp 2022-06-03 05:41:49 UTC (rev 295171)
@@ -306,8 +306,7 @@
}
if (character == kEndOfFileMarker) {
parseError();
- bufferASCIICharacter('<');
- bufferASCIICharacter('/');
+ bufferCharacters("</"_s);
RECONSUME_IN(DataState);
}
parseError();
@@ -347,8 +346,7 @@
appendToPossibleEndTag(convertASCIIAlphaToLower(character));
ADVANCE_PAST_NON_NEWLINE_TO(RCDATAEndTagNameState);
}
- bufferASCIICharacter('<');
- bufferASCIICharacter('/');
+ bufferCharacters("</"_s);
RECONSUME_IN(RCDATAState);
END_STATE()
@@ -374,8 +372,7 @@
if (isAppropriateEndTag())
return commitToCompleteEndTag(source);
}
- bufferASCIICharacter('<');
- bufferASCIICharacter('/');
+ bufferCharacters("</"_s);
m_token.appendToCharacter(m_temporaryBuffer);
m_bufferedEndTagName.clear();
m_temporaryBuffer.clear();
@@ -398,8 +395,7 @@
appendToPossibleEndTag(convertASCIIAlphaToLower(character));
ADVANCE_PAST_NON_NEWLINE_TO(RAWTEXTEndTagNameState);
}
- bufferASCIICharacter('<');
- bufferASCIICharacter('/');
+ bufferCharacters("</"_s);
RECONSUME_IN(RAWTEXTState);
END_STATE()
@@ -425,8 +421,7 @@
if (isAppropriateEndTag())
return commitToCompleteEndTag(source);
}
- bufferASCIICharacter('<');
- bufferASCIICharacter('/');
+ bufferCharacters("</"_s);
m_token.appendToCharacter(m_temporaryBuffer);
m_bufferedEndTagName.clear();
m_temporaryBuffer.clear();
@@ -440,8 +435,7 @@
ADVANCE_PAST_NON_NEWLINE_TO(ScriptDataEndTagOpenState);
}
if (character == '!') {
- bufferASCIICharacter('<');
- bufferASCIICharacter('!');
+ bufferCharacters("<!"_s);
ADVANCE_PAST_NON_NEWLINE_TO(ScriptDataEscapeStartState);
}
bufferASCIICharacter('<');
@@ -454,8 +448,7 @@
appendToPossibleEndTag(convertASCIIAlphaToLower(character));
ADVANCE_PAST_NON_NEWLINE_TO(ScriptDataEndTagNameState);
}
- bufferASCIICharacter('<');
- bufferASCIICharacter('/');
+ bufferCharacters("</"_s);
RECONSUME_IN(ScriptDataState);
END_STATE()
@@ -481,8 +474,7 @@
if (isAppropriateEndTag())
return commitToCompleteEndTag(source);
}
- bufferASCIICharacter('<');
- bufferASCIICharacter('/');
+ bufferCharacters("</"_s);
m_token.appendToCharacter(m_temporaryBuffer);
m_bufferedEndTagName.clear();
m_temporaryBuffer.clear();
@@ -577,8 +569,7 @@
appendToPossibleEndTag(convertASCIIAlphaToLower(character));
ADVANCE_PAST_NON_NEWLINE_TO(ScriptDataEscapedEndTagNameState);
}
- bufferASCIICharacter('<');
- bufferASCIICharacter('/');
+ bufferCharacters("</"_s);
RECONSUME_IN(ScriptDataEscapedState);
END_STATE()
@@ -604,8 +595,7 @@
if (isAppropriateEndTag())
return commitToCompleteEndTag(source);
}
- bufferASCIICharacter('<');
- bufferASCIICharacter('/');
+ bufferCharacters("</"_s);
m_token.appendToCharacter(m_temporaryBuffer);
m_bufferedEndTagName.clear();
m_temporaryBuffer.clear();
@@ -1385,8 +1375,7 @@
BEGIN_STATE(CDATASectionDoubleRightSquareBracketState)
if (character == '>')
ADVANCE_PAST_NON_NEWLINE_TO(DataState);
- bufferASCIICharacter(']');
- bufferASCIICharacter(']');
+ bufferCharacters("]]"_s);
RECONSUME_IN(CDATASectionState);
END_STATE()
Modified: trunk/Source/WebCore/html/parser/HTMLTokenizer.h (295170 => 295171)
--- trunk/Source/WebCore/html/parser/HTMLTokenizer.h 2022-06-03 05:35:30 UTC (rev 295170)
+++ trunk/Source/WebCore/html/parser/HTMLTokenizer.h 2022-06-03 05:41:49 UTC (rev 295171)
@@ -160,6 +160,7 @@
void bufferASCIICharacter(UChar);
void bufferCharacter(UChar);
template<typename CharacterType> void bufferCharacters(Span<const CharacterType>);
+ void bufferCharacters(ASCIILiteral literal) { bufferCharacters(Span { literal.characters8(), literal.length() }); }
bool emitAndResumeInDataState(SegmentedString&);
bool emitAndReconsumeInDataState();
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes