Changeset 207999 in webkit


Ignore:
Timestamp:
Oct 27, 2016 1:00:38 PM (7 years ago)
Author:
Yusuke Suzuki
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):

Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r207967 r207999  
     12016-10-27  Yusuke Suzuki  <utatane.tea@gmail.com>
     2
     3        [DOMJIT][CSSJIT] Share code with DOMJIT
     4        https://bugs.webkit.org/show_bug.cgi?id=164006
     5
     6        Reviewed by Mark Lam.
     7
     8        Move CSSJIT's getDocument function to DOMJIT and share it with DOMJIT.
     9        And rename it to "loadDocument", it is closer name to the JSC's convention.
     10
     11        No behavior change.
     12
     13        * cssjit/SelectorCompiler.cpp:
     14        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateSpecialFailureInQuirksModeForActiveAndHoverIfNeeded):
     15        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementAttributeValueExactMatching):
     16        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementHasTagName):
     17        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsRoot):
     18        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsScopeRoot):
     19        (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsTarget):
     20        (WebCore::SelectorCompiler::getDocument): Deleted.
     21        * domjit/DOMJITHelpers.h:
     22        (WebCore::DOMJIT::loadDocument):
     23        * domjit/JSNodeDOMJIT.cpp:
     24        (WebCore::NodeOwnerDocumentDOMJIT::callDOM):
     25
    1262016-10-27  Youenn Fablet  <youenn@apple.com>
    227
  • trunk/Source/WebCore/cssjit/SelectorCompiler.cpp

    r207536 r207999  
    3232#include "CSSSelector.h"
    3333#include "CSSSelectorList.h"
     34#include "DOMJITHelpers.h"
    3435#include "Element.h"
    3536#include "ElementData.h"
     
    23122313}
    23132314
    2314 static void getDocument(Assembler& assembler, Assembler::RegisterID element, Assembler::RegisterID output)
    2315 {
    2316     assembler.loadPtr(Assembler::Address(element, Node::treeScopeMemoryOffset()), output);
    2317     assembler.loadPtr(Assembler::Address(output, TreeScope::documentScopeMemoryOffset()), output);
    2318 }
    2319 
    23202315void SelectorCodeGenerator::generateSpecialFailureInQuirksModeForActiveAndHoverIfNeeded(Assembler::JumpList& failureCases, const SelectorFragment& fragment)
    23212316{
     
    23272322        static_assert(sizeof(DocumentCompatibilityMode) == 1, "We generate a byte load/test for the compatibility mode.");
    23282323        LocalRegister documentAddress(m_registerAllocator);
    2329         getDocument(m_assembler, elementAddressRegister, documentAddress);
     2324        DOMJIT::loadDocument(m_assembler, elementAddressRegister, documentAddress);
    23302325        failureCases.append(m_assembler.branchTest8(Assembler::NonZero, Assembler::Address(documentAddress, Document::compatibilityModeMemoryOffset()), Assembler::TrustedImm32(static_cast<std::underlying_type<DocumentCompatibilityMode>::type>(DocumentCompatibilityMode::QuirksMode))));
    23312326
     
    29932988        {
    29942989            LocalRegister document(m_registerAllocator);
    2995             getDocument(m_assembler, elementAddressRegister, document);
     2990            DOMJIT::loadDocument(m_assembler, elementAddressRegister, document);
    29962991            failureCases.append(testIsHTMLClassOnDocument(Assembler::Zero, m_assembler, document));
    29972992        }
     
    34233418            {
    34243419                LocalRegister document(m_registerAllocator);
    3425                 getDocument(m_assembler, elementAddressRegister, document);
     3420                DOMJIT::loadDocument(m_assembler, elementAddressRegister, document);
    34263421                caseSensitiveCases.append(testIsHTMLClassOnDocument(Assembler::Zero, m_assembler, document));
    34273422            }
     
    37813776{
    37823777    LocalRegister document(m_registerAllocator);
    3783     getDocument(m_assembler, elementAddressRegister, document);
     3778    DOMJIT::loadDocument(m_assembler, elementAddressRegister, document);
    37843779    failureCases.append(m_assembler.branchPtr(Assembler::NotEqual, Assembler::Address(document, Document::documentElementMemoryOffset()), elementAddressRegister));
    37853780}
     
    37953790    Assembler::Jump scopeIsNotNull = m_assembler.branchTestPtr(Assembler::NonZero, scope);
    37963791
    3797     getDocument(m_assembler, elementAddressRegister, scope);
     3792    DOMJIT::loadDocument(m_assembler, elementAddressRegister, scope);
    37983793    m_assembler.loadPtr(Assembler::Address(scope, Document::documentElementMemoryOffset()), scope);
    37993794
     
    38053800{
    38063801    LocalRegister document(m_registerAllocator);
    3807     getDocument(m_assembler, elementAddressRegister, document);
     3802    DOMJIT::loadDocument(m_assembler, elementAddressRegister, document);
    38083803    failureCases.append(m_assembler.branchPtr(Assembler::NotEqual, Assembler::Address(document, Document::cssTargetMemoryOffset()), elementAddressRegister));
    38093804}
  • trunk/Source/WebCore/domjit/DOMJITHelpers.h

    r207787 r207999  
    3838using JSC::GPRReg;
    3939using JSC::JSValueRegs;
     40using JSC::MacroAssembler;
     41
     42static_assert(std::is_same<GPRReg, MacroAssembler::RegisterID>::value, "GPRReg is the alias to the MacroAssembler::RegisterID");
    4043
    4144inline CCallHelpers::Jump branchIfNotWorldIsNormal(CCallHelpers& jit, GPRReg globalObject)
     
    138141}
    139142
     143inline void loadDocument(MacroAssembler& jit, GPRReg node, GPRReg output)
     144{
     145    jit.loadPtr(CCallHelpers::Address(node, Node::treeScopeMemoryOffset()), output);
     146    jit.loadPtr(CCallHelpers::Address(output, TreeScope::documentScopeMemoryOffset()), output);
     147}
     148
    140149} }
    141150
  • trunk/Source/WebCore/domjit/JSNodeDOMJIT.cpp

    r207932 r207999  
    207207        notDocument.link(&jit);
    208208        jit.loadPtr(CCallHelpers::Address(node, JSNode::offsetOfWrapped()), scratch);
    209         jit.loadPtr(CCallHelpers::Address(scratch, Node::treeScopeMemoryOffset()), scratch);
    210         jit.loadPtr(CCallHelpers::Address(scratch, TreeScope::documentScopeMemoryOffset()), scratch);
    211 
     209        DOMJIT::loadDocument(jit, scratch, scratch);
    212210        DOMJIT::toWrapper<Document>(jit, params, scratch, globalObject, result, toWrapperSlow<Document>, globalObjectValue);
    213211        done.link(&jit);
Note: See TracChangeset for help on using the changeset viewer.