2008-03-28 Maciej Stachowiak <mjs@apple.com>
authormjs@apple.com <mjs@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 30 Mar 2008 04:58:08 +0000 (04:58 +0000)
committermjs@apple.com <mjs@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 30 Mar 2008 04:58:08 +0000 (04:58 +0000)
        Reviewed by Oliver.

        - yet still more bindings speedup

        Make AtomicString straight from UString in handcoded bindings

        * bindings/js/JSElementCustom.cpp:
        (WebCore::JSElement::setAttribute):
        (WebCore::JSElement::setAttributeNS):
        * dom/Document.cpp:
        (WebCore::Document::createElement):
        * dom/Document.h:
        * html/HTMLDocument.cpp:
        (WebCore::HTMLDocument::createElement):
        * html/HTMLDocument.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@31439 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/bindings/js/JSElementCustom.cpp
WebCore/dom/Document.cpp
WebCore/dom/Document.h
WebCore/dom/Element.cpp
WebCore/dom/Element.h
WebCore/html/HTMLDocument.cpp
WebCore/html/HTMLDocument.h

index fcaa90bdf46137952a58a9ed7ba8d97cef6b6b41..caf8c1a84dbf5335da2d9351c56f562377bc621b 100644 (file)
@@ -1,3 +1,21 @@
+2008-03-28  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Oliver.
+
+        - yet still more bindings speedup
+        
+        Make AtomicString straight from UString in handcoded bindings
+
+        * bindings/js/JSElementCustom.cpp:
+        (WebCore::JSElement::setAttribute):
+        (WebCore::JSElement::setAttributeNS):
+        * dom/Document.cpp:
+        (WebCore::Document::createElement):
+        * dom/Document.h:
+        * html/HTMLDocument.cpp:
+        (WebCore::HTMLDocument::createElement):
+        * html/HTMLDocument.h:
+
 2008-03-29  Sam Weinig  <sam@webkit.org>
 
         Reviewed by Darin Adler.
index aa55556674bd8f3045b414ee0a5bc57dab043dfd..8810f9f9162aac92b7b6d1205dafed92e08ac183 100644 (file)
@@ -55,8 +55,8 @@ static inline bool allowSettingSrcToJavascriptURL(ExecState* exec, Element* elem
 JSValue* JSElement::setAttribute(ExecState* exec, const List& args)
 {
     ExceptionCode ec = 0;
-    String name = args[0]->toString(exec);
-    String value = args[1]->toString(exec);
+    AtomicString name = args[0]->toString(exec);
+    AtomicString value = args[1]->toString(exec);
 
     Element* imp = impl();
     if (!allowSettingSrcToJavascriptURL(exec, imp, name, value))
@@ -88,9 +88,9 @@ JSValue* JSElement::setAttributeNode(ExecState* exec, const List& args)
 JSValue* JSElement::setAttributeNS(ExecState* exec, const List& args)
 {
     ExceptionCode ec = 0;
-    String namespaceURI = valueToStringWithNullCheck(exec, args[0]);
-    String qualifiedName = args[1]->toString(exec);
-    String value = args[2]->toString(exec);
+    AtomicString namespaceURI = valueToStringWithNullCheck(exec, args[0]);
+    AtomicString qualifiedName = args[1]->toString(exec);
+    AtomicString value = args[2]->toString(exec);
 
     Element* imp = impl();
     if (!allowSettingSrcToJavascriptURL(exec, imp, qualifiedName, value))
index 7c14a1880a4ec6f75aa6985235ee6e9dcdd7375c..888d2ce03eb89906b38bfacca001993610cb62f1 100644 (file)
@@ -512,7 +512,7 @@ Element* Document::documentElement() const
     return m_documentElement.get();
 }
 
-PassRefPtr<Element> Document::createElement(const String &name, ExceptionCode& ec)
+PassRefPtr<Element> Document::createElement(const AtomicString& name, ExceptionCode& ec)
 {
     if (!isValidName(name)) {
         ec = INVALID_CHARACTER_ERR;
index 274c5d359d121b121c5543f357a0beaa5c1fefaf..c4a97ddfc5afcea7e17ebc0786e0c32a5bafbdfe 100644 (file)
@@ -184,7 +184,7 @@ public:
     DOMImplementation* implementation() const;
     virtual void childrenChanged(bool changedByParser = false, Node* beforeChange = 0, Node* afterChange = 0, int childCountDelta = 0);
     Element* documentElement() const;
-    virtual PassRefPtr<Element> createElement(const String& tagName, ExceptionCode&);
+    virtual PassRefPtr<Element> createElement(const AtomicString& tagName, ExceptionCode&);
     PassRefPtr<DocumentFragment> createDocumentFragment ();
     PassRefPtr<Text> createTextNode(const String& data);
     PassRefPtr<Comment> createComment(const String& data);
index 396387a1042d42976e4b418d70fde768d98d2a3f..16d8fe2a9ac79281b29e9ee48096bb748329ad6a 100644 (file)
@@ -478,14 +478,14 @@ const AtomicString& Element::getAttributeNS(const String& namespaceURI, const St
     return getAttribute(QualifiedName(nullAtom, localName, namespaceURI));
 }
 
-void Element::setAttribute(const String& name, const AtomicString& value, ExceptionCode& ec)
+void Element::setAttribute(const AtomicString& name, const AtomicString& value, ExceptionCode& ec)
 {
     if (!Document::isValidName(name)) {
         ec = INVALID_CHARACTER_ERR;
         return;
     }
 
-    const String& localName = (shouldIgnoreAttributeCase(this) && !name.impl()->isLower()) ? name.lower() : name;
+    const AtomicString& localName = (shouldIgnoreAttributeCase(this) && !name.string().impl()->isLower()) ? AtomicString(name.string().lower()) : name;
 
     // allocate attributemap if necessary
     Attribute* old = attributes(false)->getAttributeItem(localName);
@@ -1083,7 +1083,7 @@ PassRefPtr<Attr> Element::removeAttributeNode(Attr *attr, ExceptionCode& ec)
     return static_pointer_cast<Attr>(attrs->removeNamedItem(attr->qualifiedName(), ec));
 }
 
-void Element::setAttributeNS(const String& namespaceURI, const String& qualifiedName, const AtomicString& value, ExceptionCode& ec)
+void Element::setAttributeNS(const AtomicString& namespaceURI, const AtomicString& qualifiedName, const AtomicString& value, ExceptionCode& ec)
 {
     String prefix, localName;
     if (!Document::parseQualifiedName(qualifiedName, prefix, localName, ec))
index b3e330e5ad35323109505083caa4089b6bbb75c3..fbb73c4e0099516e81748ea9e2cddb70e2557083 100644 (file)
@@ -56,8 +56,8 @@ public:
     const AtomicString& getAttribute(const String& name) const;
     const AtomicString& getAttributeNS(const String& namespaceURI, const String& localName) const;
 
-    void setAttribute(const String& name, const AtomicString& value, ExceptionCode&);
-    void setAttributeNS(const String& namespaceURI, const String& qualifiedName, const AtomicString& value, ExceptionCode&);
+    void setAttribute(const AtomicString& name, const AtomicString& value, ExceptionCode&);
+    void setAttributeNS(const AtomicString& namespaceURI, const AtomicString& qualifiedName, const AtomicString& value, ExceptionCode&);
 
     void scrollIntoView (bool alignToTop = true);
     void scrollIntoViewIfNeeded(bool centerIfNeeded = true);
index 61a88faa5143074f5581d343183524ed6a23b857..156c51199fb7a542db2dd74fbfa91cc7b9ecb2c9 100644 (file)
@@ -298,14 +298,14 @@ bool HTMLDocument::childAllowed(Node *newChild)
     return newChild->hasTagName(htmlTag) || newChild->isCommentNode() || (newChild->nodeType() == DOCUMENT_TYPE_NODE && !doctype());
 }
 
-PassRefPtr<Element> HTMLDocument::createElement(const String &name, ExceptionCode& ec)
+PassRefPtr<Element> HTMLDocument::createElement(const AtomicString& name, ExceptionCode& ec)
 {
-    String lowerName(name.lower());
+    AtomicString lowerName = name.string().impl()->isLower() ? name : AtomicString(name.string().lower());
     if (!isValidName(lowerName)) {
         ec = INVALID_CHARACTER_ERR;
         return 0;
     }
-    return HTMLElementFactory::createHTMLElement(AtomicString(lowerName), this, 0, false);
+    return HTMLElementFactory::createHTMLElement(lowerName, this, 0, false);
 }
 
 static void addItemToMap(HTMLDocument::NameCountMap& map, const AtomicString& name)
index 2b0906bf3d37638c9248b3e506c67833329d7316..a68e5956e7a328c23e44b538632b90bdead0014a 100644 (file)
@@ -72,7 +72,7 @@ public:
 
     virtual bool childAllowed(Node*);
 
-    virtual PassRefPtr<Element> createElement(const String& tagName, ExceptionCode&);
+    virtual PassRefPtr<Element> createElement(const AtomicString& tagName, ExceptionCode&);
 
     void addNamedItem(const AtomicString& name);
     void removeNamedItem(const AtomicString& name);