Title: [163512] trunk/Source/WebCore
Revision
163512
Author
[email protected]
Date
2014-02-05 21:14:19 -0800 (Wed, 05 Feb 2014)

Log Message

SelectorCodeGenerator::generateElementHasTagName should match the local name before the namespace
https://bugs.webkit.org/show_bug.cgi?id=128167

Reviewed by Sam Weinig.

The local name is a stricter filter than the namespace, it should always run first.

* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementHasTagName):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (163511 => 163512)


--- trunk/Source/WebCore/ChangeLog	2014-02-06 05:11:39 UTC (rev 163511)
+++ trunk/Source/WebCore/ChangeLog	2014-02-06 05:14:19 UTC (rev 163512)
@@ -1,5 +1,17 @@
 2014-02-05  Benjamin Poulain  <[email protected]>
 
+        SelectorCodeGenerator::generateElementHasTagName should match the local name before the namespace
+        https://bugs.webkit.org/show_bug.cgi?id=128167
+
+        Reviewed by Sam Weinig.
+
+        The local name is a stricter filter than the namespace, it should always run first.
+
+        * cssjit/SelectorCompiler.cpp:
+        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementHasTagName):
+
+2014-02-05  Benjamin Poulain  <[email protected]>
+
         Add HTMLNames::classAttr as a regular name in SVGElement::isAnimatableAttribute
         https://bugs.webkit.org/show_bug.cgi?id=128166
 

Modified: trunk/Source/WebCore/cssjit/SelectorCompiler.cpp (163511 => 163512)


--- trunk/Source/WebCore/cssjit/SelectorCompiler.cpp	2014-02-06 05:11:39 UTC (rev 163511)
+++ trunk/Source/WebCore/cssjit/SelectorCompiler.cpp	2014-02-06 05:14:19 UTC (rev 163512)
@@ -813,6 +813,14 @@
     LocalRegister qualifiedNameImpl(m_registerAllocator);
     m_assembler.loadPtr(Assembler::Address(elementAddressRegister, Element::tagQNameMemoryOffset() + QualifiedName::implMemoryOffset()), qualifiedNameImpl);
 
+    const AtomicString& selectorLocalName = nameToMatch.localName();
+    if (selectorLocalName != starAtom) {
+        // Generate localName == element->localName().
+        LocalRegister constantRegister(m_registerAllocator);
+        m_assembler.move(Assembler::TrustedImmPtr(selectorLocalName.impl()), constantRegister);
+        failureCases.append(m_assembler.branchPtr(Assembler::NotEqual, Assembler::Address(qualifiedNameImpl, QualifiedName::QualifiedNameImpl::localNameMemoryOffset()), constantRegister));
+    }
+
     const AtomicString& selectorNamespaceURI = nameToMatch.namespaceURI();
     if (selectorNamespaceURI != starAtom) {
         // Generate namespaceURI == element->namespaceURI().
@@ -820,14 +828,6 @@
         m_assembler.move(Assembler::TrustedImmPtr(selectorNamespaceURI.impl()), constantRegister);
         failureCases.append(m_assembler.branchPtr(Assembler::NotEqual, Assembler::Address(qualifiedNameImpl, QualifiedName::QualifiedNameImpl::namespaceMemoryOffset()), constantRegister));
     }
-
-    const AtomicString& selectorLocalName = nameToMatch.localName();
-    if (selectorLocalName != starAtom) {
-        // Generate localName == element->localName().
-        LocalRegister constantRegister(m_registerAllocator);
-        m_assembler.move(Assembler::TrustedImmPtr(selectorLocalName.impl()), constantRegister);
-        failureCases.append(m_assembler.branchPtr(Assembler::NotEqual, Assembler::Address(qualifiedNameImpl, QualifiedName::QualifiedNameImpl::localNameMemoryOffset()), constantRegister));
-    }
 }
 
 void SelectorCodeGenerator::generateElementHasId(Assembler::JumpList& failureCases, const LocalRegister& elementDataAddress, const AtomicString& idToMatch)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to