Title: [295247] trunk/Source/WebCore/html/parser
- Revision
- 295247
- Author
- cdu...@apple.com
- Date
- 2022-06-03 16:24:54 -0700 (Fri, 03 Jun 2022)
Log Message
Optimize HTMLToken::appendToAttributeValue()
https://bugs.webkit.org/show_bug.cgi?id=241274
Reviewed by Darin Adler.
Optimize HTMLToken::appendToAttributeValue() by appending all characters at
once instead of one by one.
* Source/WebCore/html/parser/HTMLToken.h:
(WebCore::HTMLToken::appendToAttributeValue):
* Source/WebCore/html/parser/HTMLTokenizer.cpp:
(WebCore::HTMLTokenizer::processToken):
Canonical link: https://commits.webkit.org/251296@main
Modified Paths
Diff
Modified: trunk/Source/WebCore/html/parser/HTMLToken.h (295246 => 295247)
--- trunk/Source/WebCore/html/parser/HTMLToken.h 2022-06-03 23:22:06 UTC (rev 295246)
+++ trunk/Source/WebCore/html/parser/HTMLToken.h 2022-06-03 23:24:54 UTC (rev 295247)
@@ -106,6 +106,7 @@
void appendToAttributeName(UChar);
void appendToAttributeValue(UChar);
void appendToAttributeValue(unsigned index, StringView value);
+ template<typename CharacterType> void appendToAttributeValue(Span<const CharacterType>);
void endAttribute();
void setSelfClosing();
@@ -331,6 +332,14 @@
m_currentAttribute->value.append(character);
}
+template<typename CharacterType>
+inline void HTMLToken::appendToAttributeValue(Span<const CharacterType> characters)
+{
+ ASSERT(m_type == StartTag || m_type == EndTag);
+ ASSERT(m_currentAttribute);
+ m_currentAttribute->value.append(characters);
+}
+
inline void HTMLToken::appendToAttributeValue(unsigned i, StringView value)
{
ASSERT(!value.isEmpty());
Modified: trunk/Source/WebCore/html/parser/HTMLTokenizer.cpp (295246 => 295247)
--- trunk/Source/WebCore/html/parser/HTMLTokenizer.cpp 2022-06-03 23:22:06 UTC (rev 295246)
+++ trunk/Source/WebCore/html/parser/HTMLTokenizer.cpp 2022-06-03 23:24:54 UTC (rev 295247)
@@ -854,8 +854,10 @@
ASSERT(decodedEntity.isEmpty());
m_token.appendToAttributeValue('&');
} else {
- for (unsigned i = 0; i < decodedEntity.length(); ++i)
- m_token.appendToAttributeValue(decodedEntity[i]);
+ if (decodedEntity.is8Bit())
+ m_token.appendToAttributeValue(decodedEntity.span<LChar>());
+ else
+ m_token.appendToAttributeValue(decodedEntity.span<UChar>());
}
// We're supposed to switch back to the attribute value state that
// we were in when we were switched into this state. Rather than
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes