Title: [207999] trunk/Source/WebCore
Revision
207999
Author
[email protected]
Date
2016-10-27 13:00:38 -0700 (Thu, 27 Oct 2016)

Log Message

[DOMJIT][CSSJIT] Share code with DOMJIT
https://bugs.webkit.org/show_bug.cgi?id=164006

Reviewed by Mark Lam.

Move CSSJIT's getDocument function to DOMJIT and share it with DOMJIT.
And rename it to "loadDocument", it is closer name to the JSC's convention.

No behavior change.

* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateSpecialFailureInQuirksModeForActiveAndHoverIfNeeded):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementAttributeValueExactMatching):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementHasTagName):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsRoot):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsScopeRoot):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsTarget):
(WebCore::SelectorCompiler::getDocument): Deleted.
* domjit/DOMJITHelpers.h:
(WebCore::DOMJIT::loadDocument):
* domjit/JSNodeDOMJIT.cpp:
(WebCore::NodeOwnerDocumentDOMJIT::callDOM):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (207998 => 207999)


--- trunk/Source/WebCore/ChangeLog	2016-10-27 19:49:49 UTC (rev 207998)
+++ trunk/Source/WebCore/ChangeLog	2016-10-27 20:00:38 UTC (rev 207999)
@@ -1,3 +1,28 @@
+2016-10-27  Yusuke Suzuki  <[email protected]>
+
+        [DOMJIT][CSSJIT] Share code with DOMJIT
+        https://bugs.webkit.org/show_bug.cgi?id=164006
+
+        Reviewed by Mark Lam.
+
+        Move CSSJIT's getDocument function to DOMJIT and share it with DOMJIT.
+        And rename it to "loadDocument", it is closer name to the JSC's convention.
+
+        No behavior change.
+
+        * cssjit/SelectorCompiler.cpp:
+        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateSpecialFailureInQuirksModeForActiveAndHoverIfNeeded):
+        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementAttributeValueExactMatching):
+        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementHasTagName):
+        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsRoot):
+        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsScopeRoot):
+        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsTarget):
+        (WebCore::SelectorCompiler::getDocument): Deleted.
+        * domjit/DOMJITHelpers.h:
+        (WebCore::DOMJIT::loadDocument):
+        * domjit/JSNodeDOMJIT.cpp:
+        (WebCore::NodeOwnerDocumentDOMJIT::callDOM):
+
 2016-10-27  Youenn Fablet  <[email protected]>
 
         REGRESSION(r207753-207755): ASSERTION FAILED: m_parsedStyleSheetCache->isInMemoryCache()

Modified: trunk/Source/WebCore/cssjit/SelectorCompiler.cpp (207998 => 207999)


--- trunk/Source/WebCore/cssjit/SelectorCompiler.cpp	2016-10-27 19:49:49 UTC (rev 207998)
+++ trunk/Source/WebCore/cssjit/SelectorCompiler.cpp	2016-10-27 20:00:38 UTC (rev 207999)
@@ -31,6 +31,7 @@
 
 #include "CSSSelector.h"
 #include "CSSSelectorList.h"
+#include "DOMJITHelpers.h"
 #include "Element.h"
 #include "ElementData.h"
 #include "ElementRareData.h"
@@ -2311,12 +2312,6 @@
     return branchOnResolvingMode(Assembler::NotEqual, SelectorChecker::Mode::ResolvingStyle, checkingContext);
 }
 
-static void getDocument(Assembler& assembler, Assembler::RegisterID element, Assembler::RegisterID output)
-{
-    assembler.loadPtr(Assembler::Address(element, Node::treeScopeMemoryOffset()), output);
-    assembler.loadPtr(Assembler::Address(output, TreeScope::documentScopeMemoryOffset()), output);
-}
-
 void SelectorCodeGenerator::generateSpecialFailureInQuirksModeForActiveAndHoverIfNeeded(Assembler::JumpList& failureCases, const SelectorFragment& fragment)
 {
     if (fragment.onlyMatchesLinksInQuirksMode) {
@@ -2326,7 +2321,7 @@
         // Only quirks mode restrict :hover and :active.
         static_assert(sizeof(DocumentCompatibilityMode) == 1, "We generate a byte load/test for the compatibility mode.");
         LocalRegister documentAddress(m_registerAllocator);
-        getDocument(m_assembler, elementAddressRegister, documentAddress);
+        DOMJIT::loadDocument(m_assembler, elementAddressRegister, documentAddress);
         failureCases.append(m_assembler.branchTest8(Assembler::NonZero, Assembler::Address(documentAddress, Document::compatibilityModeMemoryOffset()), Assembler::TrustedImm32(static_cast<std::underlying_type<DocumentCompatibilityMode>::type>(DocumentCompatibilityMode::QuirksMode))));
 
         isLink.link(&m_assembler);
@@ -2992,7 +2987,7 @@
 
         {
             LocalRegister document(m_registerAllocator);
-            getDocument(m_assembler, elementAddressRegister, document);
+            DOMJIT::loadDocument(m_assembler, elementAddressRegister, document);
             failureCases.append(testIsHTMLClassOnDocument(Assembler::Zero, m_assembler, document));
         }
 
@@ -3422,7 +3417,7 @@
             caseSensitiveCases.append(testIsHTMLFlagOnNode(Assembler::Zero, m_assembler, elementAddressRegister));
             {
                 LocalRegister document(m_registerAllocator);
-                getDocument(m_assembler, elementAddressRegister, document);
+                DOMJIT::loadDocument(m_assembler, elementAddressRegister, document);
                 caseSensitiveCases.append(testIsHTMLClassOnDocument(Assembler::Zero, m_assembler, document));
             }
 
@@ -3780,7 +3775,7 @@
 void SelectorCodeGenerator::generateElementIsRoot(Assembler::JumpList& failureCases)
 {
     LocalRegister document(m_registerAllocator);
-    getDocument(m_assembler, elementAddressRegister, document);
+    DOMJIT::loadDocument(m_assembler, elementAddressRegister, document);
     failureCases.append(m_assembler.branchPtr(Assembler::NotEqual, Assembler::Address(document, Document::documentElementMemoryOffset()), elementAddressRegister));
 }
 
@@ -3794,7 +3789,7 @@
 
     Assembler::Jump scopeIsNotNull = m_assembler.branchTestPtr(Assembler::NonZero, scope);
 
-    getDocument(m_assembler, elementAddressRegister, scope);
+    DOMJIT::loadDocument(m_assembler, elementAddressRegister, scope);
     m_assembler.loadPtr(Assembler::Address(scope, Document::documentElementMemoryOffset()), scope);
 
     scopeIsNotNull.link(&m_assembler);
@@ -3804,7 +3799,7 @@
 void SelectorCodeGenerator::generateElementIsTarget(Assembler::JumpList& failureCases)
 {
     LocalRegister document(m_registerAllocator);
-    getDocument(m_assembler, elementAddressRegister, document);
+    DOMJIT::loadDocument(m_assembler, elementAddressRegister, document);
     failureCases.append(m_assembler.branchPtr(Assembler::NotEqual, Assembler::Address(document, Document::cssTargetMemoryOffset()), elementAddressRegister));
 }
 

Modified: trunk/Source/WebCore/domjit/DOMJITHelpers.h (207998 => 207999)


--- trunk/Source/WebCore/domjit/DOMJITHelpers.h	2016-10-27 19:49:49 UTC (rev 207998)
+++ trunk/Source/WebCore/domjit/DOMJITHelpers.h	2016-10-27 20:00:38 UTC (rev 207999)
@@ -37,7 +37,10 @@
 using JSC::CCallHelpers;
 using JSC::GPRReg;
 using JSC::JSValueRegs;
+using JSC::MacroAssembler;
 
+static_assert(std::is_same<GPRReg, MacroAssembler::RegisterID>::value, "GPRReg is the alias to the MacroAssembler::RegisterID");
+
 inline CCallHelpers::Jump branchIfNotWorldIsNormal(CCallHelpers& jit, GPRReg globalObject)
 {
     return jit.branchTest8(CCallHelpers::Zero, CCallHelpers::Address(globalObject, JSDOMGlobalObject::offsetOfWorldIsNormal()));
@@ -137,6 +140,12 @@
     return jit.branchIfNotType(target, JSC::JSType(JSDocumentWrapperType));
 }
 
+inline void loadDocument(MacroAssembler& jit, GPRReg node, GPRReg output)
+{
+    jit.loadPtr(CCallHelpers::Address(node, Node::treeScopeMemoryOffset()), output);
+    jit.loadPtr(CCallHelpers::Address(output, TreeScope::documentScopeMemoryOffset()), output);
+}
+
 } }
 
 #endif

Modified: trunk/Source/WebCore/domjit/JSNodeDOMJIT.cpp (207998 => 207999)


--- trunk/Source/WebCore/domjit/JSNodeDOMJIT.cpp	2016-10-27 19:49:49 UTC (rev 207998)
+++ trunk/Source/WebCore/domjit/JSNodeDOMJIT.cpp	2016-10-27 20:00:38 UTC (rev 207999)
@@ -206,9 +206,7 @@
 
         notDocument.link(&jit);
         jit.loadPtr(CCallHelpers::Address(node, JSNode::offsetOfWrapped()), scratch);
-        jit.loadPtr(CCallHelpers::Address(scratch, Node::treeScopeMemoryOffset()), scratch);
-        jit.loadPtr(CCallHelpers::Address(scratch, TreeScope::documentScopeMemoryOffset()), scratch);
-
+        DOMJIT::loadDocument(jit, scratch, scratch);
         DOMJIT::toWrapper<Document>(jit, params, scratch, globalObject, result, toWrapperSlow<Document>, globalObjectValue);
         done.link(&jit);
         return CCallHelpers::JumpList();
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to