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

Reply via email to