Title: [161046] trunk/Source/WebCore
- Revision
- 161046
- Author
- [email protected]
- Date
- 2013-12-23 19:28:58 -0800 (Mon, 23 Dec 2013)
Log Message
Add the pseudo classes link and any-link to the Selector Code Generator
https://bugs.webkit.org/show_bug.cgi?id=126196
Reviewed by Ryosuke Niwa.
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::addPseudoType):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementMatching):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsLink):
* dom/Node.h:
(WebCore::Node::flagIsElement):
(WebCore::Node::flagIsLink):
Fix the type to match TrustedImm32.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (161045 => 161046)
--- trunk/Source/WebCore/ChangeLog 2013-12-24 03:28:01 UTC (rev 161045)
+++ trunk/Source/WebCore/ChangeLog 2013-12-24 03:28:58 UTC (rev 161046)
@@ -1,5 +1,21 @@
2013-12-23 Benjamin Poulain <[email protected]>
+ Add the pseudo classes link and any-link to the Selector Code Generator
+ https://bugs.webkit.org/show_bug.cgi?id=126196
+
+ Reviewed by Ryosuke Niwa.
+
+ * cssjit/SelectorCompiler.cpp:
+ (WebCore::SelectorCompiler::addPseudoType):
+ (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementMatching):
+ (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsLink):
+ * dom/Node.h:
+ (WebCore::Node::flagIsElement):
+ (WebCore::Node::flagIsLink):
+ Fix the type to match TrustedImm32.
+
+2013-12-23 Benjamin Poulain <[email protected]>
+
Add the experimental CSS code generator files to the remaining build systems
https://bugs.webkit.org/show_bug.cgi?id=126192
Modified: trunk/Source/WebCore/cssjit/SelectorCompiler.cpp (161045 => 161046)
--- trunk/Source/WebCore/cssjit/SelectorCompiler.cpp 2013-12-24 03:28:01 UTC (rev 161045)
+++ trunk/Source/WebCore/cssjit/SelectorCompiler.cpp 2013-12-24 03:28:58 UTC (rev 161046)
@@ -143,6 +143,7 @@
void generateElementHasId(Assembler::JumpList& failureCases, const LocalRegister& elementDataAddress, const AtomicString& idToMatch);
void generateElementHasClasses(Assembler::JumpList& failureCases, const LocalRegister& elementDataAddress, const Vector<const AtomicStringImpl*>& classNames);
void generateElementIsFocused(Assembler::JumpList& failureCases);
+ void generateElementIsLink(Assembler::JumpList& failureCases);
Assembler m_assembler;
RegisterAllocator m_registerAllocator;
@@ -204,6 +205,10 @@
static inline FunctionType addPseudoType(CSSSelector::PseudoType type, HashSet<unsigned>& pseudoClasses)
{
switch (type) {
+ case CSSSelector::PseudoAnyLink:
+ case CSSSelector::PseudoLink:
+ pseudoClasses.add(CSSSelector::PseudoLink);
+ return FunctionType::SimpleSelectorChecker;
case CSSSelector::PseudoFocus:
pseudoClasses.add(CSSSelector::PseudoFocus);
return FunctionType::SimpleSelectorChecker;
@@ -768,6 +773,9 @@
void SelectorCodeGenerator::generateElementMatching(Assembler::JumpList& failureCases, const SelectorFragment& fragment)
{
+ if (fragment.pseudoClasses.contains(CSSSelector::PseudoLink))
+ generateElementIsLink(failureCases);
+
if (fragment.tagName)
generateElementHasTagName(failureCases, *(fragment.tagName));
@@ -874,6 +882,11 @@
failureCases.append(functionCall.callAndBranchOnCondition(Assembler::Zero));
}
+void SelectorCodeGenerator::generateElementIsLink(Assembler::JumpList& failureCases)
+{
+ failureCases.append(m_assembler.branchTest32(Assembler::Zero, Assembler::Address(elementAddressRegister, Node::nodeFlagsMemoryOffset()), Assembler::TrustedImm32(Node::flagIsLink())));
+}
+
}; // namespace SelectorCompiler.
}; // namespace WebCore.
Modified: trunk/Source/WebCore/dom/Node.h (161045 => 161046)
--- trunk/Source/WebCore/dom/Node.h 2013-12-24 03:28:01 UTC (rev 161045)
+++ trunk/Source/WebCore/dom/Node.h 2013-12-24 03:28:58 UTC (rev 161046)
@@ -562,7 +562,8 @@
#if ENABLE(CSS_SELECTOR_JIT)
static ptrdiff_t nodeFlagsMemoryOffset() { return OBJECT_OFFSETOF(Node, m_nodeFlags); }
- static uint8_t flagIsElement() { return IsElementFlag; }
+ static int32_t flagIsElement() { return IsElementFlag; }
+ static int32_t flagIsLink() { return IsLinkFlag; }
#endif // ENABLE(CSS_SELECTOR_JIT)
protected:
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes