Changeset 208070 in webkit
- Timestamp:
- Oct 28, 2016 2:33:30 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 5 added
- 9 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r208058 r208070 1 2016-10-28 Yusuke Suzuki <utatane.tea@gmail.com> 2 3 [DOMJIT] Implement Document::documentElement 4 https://bugs.webkit.org/show_bug.cgi?id=164113 5 6 Reviewed by Sam Weinig. 7 8 * js/dom/domjit-accessor-document-element-changed-expected.txt: Added. 9 * js/dom/domjit-accessor-document-element-changed.html: Added. 10 * js/dom/domjit-accessor-document-element-expected.txt: Added. 11 * js/dom/domjit-accessor-document-element.html: Added. 12 1 13 2016-10-28 Simon Fraser <simon.fraser@apple.com> 2 14 -
trunk/Source/WebCore/CMakeLists.txt
r208036 r208070 1546 1546 1547 1547 domjit/DOMJITAbstractHeapRepository.cpp 1548 domjit/DOMJITHelpers.cpp 1549 domjit/JSDocumentDOMJIT.cpp 1548 1550 domjit/JSNodeDOMJIT.cpp 1549 1551 -
trunk/Source/WebCore/ChangeLog
r208069 r208070 1 2016-10-28 Yusuke Suzuki <utatane.tea@gmail.com> 2 3 [DOMJIT] Implement Document::documentElement 4 https://bugs.webkit.org/show_bug.cgi?id=164113 5 6 Reviewed by Sam Weinig. 7 8 Test: js/dom/domjit-accessor-document-element.html 9 10 This patch implements document.documentElement DOMJIT accessor. 11 Similar to ownerDocument accessor, the way to access to document.documentElement 12 from JIT code is already prepared for CSSJIT. DOMJIT just utilizes the existing 13 functionality: using documentElementMemoryOffset(). 14 15 document.documentElement is frequently called in jQuery. Especially, every time 16 we call jQuery.attr(), this is called. 17 18 To implement Document accessor, we clean up some code in DOMJITHelpers. 19 We create the cpp file for DOMJITHelpers and move some helpers to it. 20 And we also implement DOMJIT::checkDOM<DOMInterface> for convenience. 21 It returns appropriate CheckDOM patchpoint implementation. 22 23 This patch improves Dromaeo jslib-attr-jquery.html 10% (481.64 v.s. 532.54). 24 25 * CMakeLists.txt: 26 * WebCore.xcodeproj/project.pbxproj: 27 * cssjit/SelectorCompiler.cpp: 28 (WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsScopeRoot): 29 * dom/Document.idl: 30 * domjit/DOMJITAbstractHeapRepository.h: 31 * domjit/DOMJITCheckDOM.h: Copied from Source/WebCore/domjit/DOMJITAbstractHeapRepository.h. 32 (WebCore::DOMJIT::TypeChecker<Node>::branchIfFail): 33 (WebCore::DOMJIT::TypeChecker<Document>::branchIfFail): 34 (WebCore::DOMJIT::TypeChecker<Event>::branchIfFail): 35 (WebCore::DOMJIT::TypeChecker<Element>::branchIfFail): 36 (WebCore::DOMJIT::checkDOM): 37 * domjit/DOMJITHelpers.cpp: Copied from Source/WebCore/domjit/DOMJITAbstractHeapRepository.h. 38 (WebCore::DOMJIT::loadDocument): 39 (WebCore::DOMJIT::loadDocumentElement): 40 * domjit/DOMJITHelpers.h: 41 (WebCore::DOMJIT::toWrapperSlow): 42 (WebCore::DOMJIT::loadDocument): Deleted. 43 * domjit/JSDocumentDOMJIT.cpp: Added. 44 (WebCore::DocumentDocumentElementDOMJIT::checkDOM): 45 (WebCore::DocumentDocumentElementDOMJIT::callDOM): 46 * domjit/JSNodeDOMJIT.cpp: 47 (WebCore::createCallDOMForOffsetAccess): 48 (WebCore::NodeFirstChildDOMJIT::checkDOM): 49 (WebCore::NodeLastChildDOMJIT::checkDOM): 50 (WebCore::NodeNextSiblingDOMJIT::checkDOM): 51 (WebCore::NodePreviousSiblingDOMJIT::checkDOM): 52 (WebCore::NodeParentNodeDOMJIT::checkDOM): 53 (WebCore::NodeNodeTypeDOMJIT::checkDOM): 54 (WebCore::NodeOwnerDocumentDOMJIT::checkDOM): 55 (WebCore::NodeOwnerDocumentDOMJIT::callDOM): 56 (WebCore::toWrapperSlow): Deleted. 57 (WebCore::checkNode): Deleted. 58 1 59 2016-10-28 Dave Hyatt <hyatt@apple.com> 2 60 -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r208042 r208070 6208 6208 E38838981BAD145F00D62EE3 /* ScriptModuleLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E38838941BAD145F00D62EE3 /* ScriptModuleLoader.cpp */; }; 6209 6209 E38838991BAD145F00D62EE3 /* ScriptModuleLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = E38838951BAD145F00D62EE3 /* ScriptModuleLoader.h */; }; 6210 E398FC241DC32A20003C4684 /* DOMJITHelpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E398FC231DC32A1B003C4684 /* DOMJITHelpers.cpp */; }; 6210 6211 E3B2F0EB1D7F4C9D00B0C9D1 /* LoadableClassicScript.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E3B2F0E31D7F35EC00B0C9D1 /* LoadableClassicScript.cpp */; }; 6211 6212 E3B2F0EC1D7F4CA100B0C9D1 /* LoadableScript.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E3B2F0E91D7F3D3C00B0C9D1 /* LoadableScript.cpp */; }; … … 6213 6214 E3B2F0EE1D7F4CA900B0C9D1 /* LoadableScriptClient.h in Headers */ = {isa = PBXBuildFile; fileRef = E3B2F0E81D7F35EC00B0C9D1 /* LoadableScriptClient.h */; settings = {ATTRIBUTES = (Private, ); }; }; 6214 6215 E3B2F0F01D7F4CB500B0C9D1 /* LoadableClassicScript.h in Headers */ = {isa = PBXBuildFile; fileRef = E3B2F0E41D7F35EC00B0C9D1 /* LoadableClassicScript.h */; settings = {ATTRIBUTES = (Private, ); }; }; 6216 E3B7C0631DC34160001FB0B8 /* JSDocumentDOMJIT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E3B7C0621DC3415A001FB0B8 /* JSDocumentDOMJIT.cpp */; }; 6217 E3C99A091DC3D41C00794AD3 /* DOMJITCheckDOM.h in Headers */ = {isa = PBXBuildFile; fileRef = E3C99A081DC3D41700794AD3 /* DOMJITCheckDOM.h */; }; 6215 6218 E3FA38641D71812D00AA5950 /* PendingScriptClient.h in Headers */ = {isa = PBXBuildFile; fileRef = E3FA38611D716E7600AA5950 /* PendingScriptClient.h */; }; 6216 6219 E401C27517CE53EC00C41A35 /* ElementIteratorAssertions.h in Headers */ = {isa = PBXBuildFile; fileRef = E401C27417CE53EC00C41A35 /* ElementIteratorAssertions.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 14039 14042 E38838941BAD145F00D62EE3 /* ScriptModuleLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptModuleLoader.cpp; sourceTree = "<group>"; }; 14040 14043 E38838951BAD145F00D62EE3 /* ScriptModuleLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptModuleLoader.h; sourceTree = "<group>"; }; 14044 E398FC231DC32A1B003C4684 /* DOMJITHelpers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMJITHelpers.cpp; sourceTree = "<group>"; }; 14041 14045 E3AFA9641DA6E908002861BD /* JSNodeDOMJIT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSNodeDOMJIT.cpp; sourceTree = "<group>"; }; 14042 14046 E3B2F0E31D7F35EC00B0C9D1 /* LoadableClassicScript.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoadableClassicScript.cpp; sourceTree = "<group>"; }; … … 14045 14049 E3B2F0E81D7F35EC00B0C9D1 /* LoadableScriptClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LoadableScriptClient.h; sourceTree = "<group>"; }; 14046 14050 E3B2F0E91D7F3D3C00B0C9D1 /* LoadableScript.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoadableScript.cpp; sourceTree = "<group>"; }; 14051 E3B7C0621DC3415A001FB0B8 /* JSDocumentDOMJIT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDocumentDOMJIT.cpp; sourceTree = "<group>"; }; 14052 E3C99A081DC3D41700794AD3 /* DOMJITCheckDOM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DOMJITCheckDOM.h; sourceTree = "<group>"; }; 14047 14053 E3D049931DADC04500718F3C /* NodeConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NodeConstants.h; sourceTree = "<group>"; }; 14048 14054 E3FA38611D716E7600AA5950 /* PendingScriptClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PendingScriptClient.h; sourceTree = "<group>"; }; … … 22823 22829 E35CA14B1DBC3A3C00F83516 /* DOMJITAbstractHeapRepository.cpp */, 22824 22830 E35CA14C1DBC3A3C00F83516 /* DOMJITAbstractHeapRepository.h */, 22831 E3C99A081DC3D41700794AD3 /* DOMJITCheckDOM.h */, 22832 E398FC231DC32A1B003C4684 /* DOMJITHelpers.cpp */, 22825 22833 E3150EA51DA7218D00194012 /* DOMJITHelpers.h */, 22834 E3B7C0621DC3415A001FB0B8 /* JSDocumentDOMJIT.cpp */, 22826 22835 E3AFA9641DA6E908002861BD /* JSNodeDOMJIT.cpp */, 22827 22836 ); … … 27398 27407 B2227A910D00BF220071B782 /* SVGPolygonElement.h in Headers */, 27399 27408 B2227A940D00BF220071B782 /* SVGPolylineElement.h in Headers */, 27409 E3C99A091DC3D41C00794AD3 /* DOMJITCheckDOM.h in Headers */, 27400 27410 B2227A970D00BF220071B782 /* SVGPreserveAspectRatio.h in Headers */, 27401 27411 088A0E0A126EF1DB00978F7A /* SVGProperty.h in Headers */, … … 29027 29037 A8EA7D310A19385500A8EF5F /* HTMLImageElement.cpp in Sources */, 29028 29038 A8EA7D300A19385500A8EF5F /* HTMLImageLoader.cpp in Sources */, 29039 E3B7C0631DC34160001FB0B8 /* JSDocumentDOMJIT.cpp in Sources */, 29029 29040 A81369CD097374F600D74463 /* HTMLInputElement.cpp in Sources */, 29030 29041 93309DE5099E64920056E581 /* HTMLInterchange.cpp in Sources */, … … 29335 29346 9BE6710B1D5AEB2100345514 /* JSCustomElementRegistry.cpp in Sources */, 29336 29347 9BC5F9E01D5AAF6B002B749D /* JSCustomElementRegistryCustom.cpp in Sources */, 29348 E398FC241DC32A20003C4684 /* DOMJITHelpers.cpp in Sources */, 29337 29349 E4778B7F115A581A00B5D372 /* JSCustomEvent.cpp in Sources */, 29338 29350 DEC297611B4F2F8D005F5945 /* JSCustomEventCustom.cpp in Sources */, -
trunk/Source/WebCore/cssjit/SelectorCompiler.cpp
r207999 r208070 3791 3791 3792 3792 DOMJIT::loadDocument(m_assembler, elementAddressRegister, scope); 3793 m_assembler.loadPtr(Assembler::Address(scope, Document::documentElementMemoryOffset()), scope);3793 DOMJIT::loadDocumentElement(m_assembler, scope, scope); 3794 3794 3795 3795 scopeIsNotNull.link(&m_assembler); -
trunk/Source/WebCore/dom/Document.idl
r207571 r208070 30 30 readonly attribute DocumentType? doctype; 31 31 readonly attribute DOMImplementation implementation; 32 readonly attribute Element? documentElement;32 [DOMJIT] readonly attribute Element? documentElement; 33 33 34 34 [NewObject, MayThrowLegacyException, ImplementedAs=createElementForBindings] Element createElement(DOMString tagName); -
trunk/Source/WebCore/domjit/DOMJITAbstractHeapRepository.h
r207932 r208070 44 44 V(Node_previousSibling, Node) \ 45 45 V(Node_ownerDocument, Node) \ 46 V(Document, DOM) \ 47 V(Document_documentElement, Document) \ 46 48 47 49 -
trunk/Source/WebCore/domjit/DOMJITCheckDOM.h
r208069 r208070 1 1 /* 2 * Copyright (C) 2016 Apple Inc. All rights reserved.2 * Copyright (C) 2016 Apple Inc. All Rights Reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 22 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 * 24 25 */ 25 26 26 27 #pragma once 27 28 28 #include <domjit/DOMJITHeapRange.h> 29 #include <wtf/NeverDestroyed.h> 30 #include <wtf/Noncopyable.h> 29 #include "DOMJITHelpers.h" 31 30 32 31 #if ENABLE(JIT) 33 32 33 #include "Document.h" 34 #include "Element.h" 35 #include "Event.h" 36 #include "Node.h" 37 34 38 namespace WebCore { namespace DOMJIT { 35 39 36 // Describe your abstract heap hierarchy here. 37 // V(AbstractHeapName, Parent) 38 #define DOMJIT_ABSTRACT_HEAP_LIST(V) \ 39 V(Node, DOM) \ 40 V(Node_firstChild, Node) \ 41 V(Node_lastChild, Node) \ 42 V(Node_parentNode, Node) \ 43 V(Node_nextSibling, Node) \ 44 V(Node_previousSibling, Node) \ 45 V(Node_ownerDocument, Node) \ 40 template<typename DOMInterface> 41 struct TypeChecker { 42 }; 46 43 44 template<> 45 struct TypeChecker<Node> { 46 static CCallHelpers::Jump branchIfFail(CCallHelpers& jit, GPRReg dom) 47 { 48 return DOMJIT::branchIfNotNode(jit, dom); 49 } 50 }; 47 51 48 class AbstractHeapRepository { 49 WTF_MAKE_NONCOPYABLE(AbstractHeapRepository); 50 public: 51 static const AbstractHeapRepository& shared(); 52 template<> 53 struct TypeChecker<Document> { 54 static CCallHelpers::Jump branchIfFail(CCallHelpers& jit, GPRReg dom) 55 { 56 return DOMJIT::branchIfNotDocumentWrapper(jit, dom); 57 } 58 }; 52 59 53 JSC::DOMJIT::HeapRange DOM; 60 template<> 61 struct TypeChecker<Event> { 62 static CCallHelpers::Jump branchIfFail(CCallHelpers& jit, GPRReg dom) 63 { 64 return DOMJIT::branchIfNotEvent(jit, dom); 65 } 66 }; 54 67 55 #define DOMJIT_DEFINE_MEMBER(name, parent) JSC::DOMJIT::HeapRange name; 56 DOMJIT_ABSTRACT_HEAP_LIST(DOMJIT_DEFINE_MEMBER) 57 #undef DOMJIT_DEFINE_MEMBER 68 template<> 69 struct TypeChecker<Element> { 70 static CCallHelpers::Jump branchIfFail(CCallHelpers& jit, GPRReg dom) 71 { 72 return DOMJIT::branchIfNotElement(jit, dom); 73 } 74 }; 58 75 59 AbstractHeapRepository(); 60 }; 76 template<typename DOMInterface> 77 Ref<JSC::DOMJIT::Patchpoint> checkDOM() 78 { 79 Ref<JSC::DOMJIT::Patchpoint> patchpoint = JSC::DOMJIT::Patchpoint::create(); 80 patchpoint->setGenerator([=](CCallHelpers& jit, JSC::DOMJIT::PatchpointParams& params) { 81 return TypeChecker<DOMInterface>::branchIfFail(jit, params[0].gpr()); 82 }); 83 return patchpoint; 84 } 61 85 62 86 } } -
trunk/Source/WebCore/domjit/DOMJITHelpers.cpp
r208069 r208070 1 1 /* 2 * Copyright (C) 2016 Apple Inc. All rights reserved.2 * Copyright (C) 2016 Apple Inc. All Rights Reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 #pragma once 27 28 #include <domjit/DOMJITHeapRange.h> 29 #include <wtf/NeverDestroyed.h> 30 #include <wtf/Noncopyable.h> 26 #include "config.h" 27 #include "DOMJITHelpers.h" 31 28 32 29 #if ENABLE(JIT) 33 30 31 #include "Document.h" 32 #include "JSDOMBinding.h" 33 #include "Node.h" 34 34 35 namespace WebCore { namespace DOMJIT { 35 36 36 // Describe your abstract heap hierarchy here. 37 // V(AbstractHeapName, Parent) 38 #define DOMJIT_ABSTRACT_HEAP_LIST(V) \ 39 V(Node, DOM) \ 40 V(Node_firstChild, Node) \ 41 V(Node_lastChild, Node) \ 42 V(Node_parentNode, Node) \ 43 V(Node_nextSibling, Node) \ 44 V(Node_previousSibling, Node) \ 45 V(Node_ownerDocument, Node) \ 37 using JSC::CCallHelpers; 38 using JSC::GPRReg; 39 using JSC::JSValueRegs; 40 using JSC::MacroAssembler; 46 41 42 void loadDocument(MacroAssembler& jit, GPRReg node, GPRReg output) 43 { 44 jit.loadPtr(CCallHelpers::Address(node, Node::treeScopeMemoryOffset()), output); 45 jit.loadPtr(CCallHelpers::Address(output, TreeScope::documentScopeMemoryOffset()), output); 46 } 47 47 48 class AbstractHeapRepository { 49 WTF_MAKE_NONCOPYABLE(AbstractHeapRepository); 50 public: 51 static const AbstractHeapRepository& shared(); 52 53 JSC::DOMJIT::HeapRange DOM; 54 55 #define DOMJIT_DEFINE_MEMBER(name, parent) JSC::DOMJIT::HeapRange name; 56 DOMJIT_ABSTRACT_HEAP_LIST(DOMJIT_DEFINE_MEMBER) 57 #undef DOMJIT_DEFINE_MEMBER 58 59 AbstractHeapRepository(); 60 }; 48 void loadDocumentElement(MacroAssembler& jit, GPRReg document, GPRReg output) 49 { 50 jit.loadPtr(CCallHelpers::Address(document, Document::documentElementMemoryOffset()), output); 51 } 61 52 62 53 } } -
trunk/Source/WebCore/domjit/DOMJITHelpers.h
r208028 r208070 28 28 29 29 #include "JSDOMWrapper.h" 30 #include "ScriptWrappable.h" 30 31 #include <domjit/DOMJITPatchpoint.h> 31 32 #include <domjit/DOMJITPatchpointParams.h> 33 #include <interpreter/FrameTracers.h> 32 34 33 35 #if ENABLE(JIT) … … 50 52 { 51 53 return jit.branchTestPtr(CCallHelpers::NonZero, CCallHelpers::Address(weakImpl, JSC::WeakImpl::offsetOfWeakHandleOwner()), CCallHelpers::TrustedImm32(JSC::WeakImpl::StateMask)); 54 } 55 56 template<typename WrappedNode> 57 JSC::EncodedJSValue JIT_OPERATION toWrapperSlow(JSC::ExecState* exec, JSC::JSGlobalObject* globalObject, void* result) 58 { 59 ASSERT(exec); 60 ASSERT(result); 61 ASSERT(globalObject); 62 JSC::NativeCallFrameTracer tracer(&exec->vm(), exec); 63 return JSC::JSValue::encode(toJS(exec, static_cast<JSDOMGlobalObject*>(globalObject), *static_cast<WrappedNode*>(result))); 52 64 } 53 65 … … 151 163 } 152 164 153 inline void loadDocument(MacroAssembler& jit, GPRReg node, GPRReg output) 154 { 155 jit.loadPtr(CCallHelpers::Address(node, Node::treeScopeMemoryOffset()), output); 156 jit.loadPtr(CCallHelpers::Address(output, TreeScope::documentScopeMemoryOffset()), output); 157 } 165 void loadDocument(MacroAssembler&, GPRReg node, GPRReg output); 166 void loadDocumentElement(MacroAssembler&, GPRReg document, GPRReg output); 158 167 159 168 } } -
trunk/Source/WebCore/domjit/JSNodeDOMJIT.cpp
r207999 r208070 30 30 31 31 #include "DOMJITAbstractHeapRepository.h" 32 #include "DOMJITCheckDOM.h" 32 33 #include "DOMJITHelpers.h" 33 34 #include "JSDOMWrapper.h" … … 42 43 43 44 enum class IsContainerGuardRequirement { Required, NotRequired }; 44 45 template<typename WrappedNode>46 EncodedJSValue JIT_OPERATION toWrapperSlow(JSC::ExecState* exec, JSC::JSGlobalObject* globalObject, void* result)47 {48 ASSERT(exec);49 ASSERT(result);50 ASSERT(globalObject);51 JSC::NativeCallFrameTracer tracer(&exec->vm(), exec);52 return JSValue::encode(toJS(exec, static_cast<JSDOMGlobalObject*>(globalObject), *static_cast<WrappedNode*>(result)));53 }54 45 55 46 template<typename WrappedNode> … … 75 66 nullCases.append(jit.branchTestPtr(CCallHelpers::Zero, scratch)); 76 67 77 DOMJIT::toWrapper<WrappedNode>(jit, params, scratch, globalObject, result, toWrapperSlow<WrappedNode>, globalObjectValue);68 DOMJIT::toWrapper<WrappedNode>(jit, params, scratch, globalObject, result, DOMJIT::toWrapperSlow<WrappedNode>, globalObjectValue); 78 69 CCallHelpers::Jump done = jit.jump(); 79 70 … … 86 77 } 87 78 88 static Ref<JSC::DOMJIT::Patchpoint> checkNode()89 {90 Ref<JSC::DOMJIT::Patchpoint> patchpoint = JSC::DOMJIT::Patchpoint::create();91 patchpoint->setGenerator([=](CCallHelpers& jit, JSC::DOMJIT::PatchpointParams& params) {92 CCallHelpers::JumpList failureCases;93 failureCases.append(DOMJIT::branchIfNotNode(jit, params[0].gpr()));94 return failureCases;95 });96 return patchpoint;97 }98 99 79 Ref<JSC::DOMJIT::Patchpoint> NodeFirstChildDOMJIT::checkDOM() 100 80 { 101 return checkNode();81 return DOMJIT::checkDOM<Node>(); 102 82 } 103 83 … … 112 92 Ref<JSC::DOMJIT::Patchpoint> NodeLastChildDOMJIT::checkDOM() 113 93 { 114 return checkNode();94 return DOMJIT::checkDOM<Node>(); 115 95 } 116 96 … … 125 105 Ref<JSC::DOMJIT::Patchpoint> NodeNextSiblingDOMJIT::checkDOM() 126 106 { 127 return checkNode();107 return DOMJIT::checkDOM<Node>(); 128 108 } 129 109 … … 138 118 Ref<JSC::DOMJIT::Patchpoint> NodePreviousSiblingDOMJIT::checkDOM() 139 119 { 140 return checkNode();120 return DOMJIT::checkDOM<Node>(); 141 121 } 142 122 … … 151 131 Ref<JSC::DOMJIT::Patchpoint> NodeParentNodeDOMJIT::checkDOM() 152 132 { 153 return checkNode();133 return DOMJIT::checkDOM<Node>(); 154 134 } 155 135 … … 164 144 Ref<JSC::DOMJIT::Patchpoint> NodeNodeTypeDOMJIT::checkDOM() 165 145 { 166 return checkNode();146 return DOMJIT::checkDOM<Node>(); 167 147 } 168 148 … … 185 165 Ref<JSC::DOMJIT::Patchpoint> NodeOwnerDocumentDOMJIT::checkDOM() 186 166 { 187 return checkNode();167 return DOMJIT::checkDOM<Node>(); 188 168 } 189 169 … … 208 188 jit.loadPtr(CCallHelpers::Address(node, JSNode::offsetOfWrapped()), scratch); 209 189 DOMJIT::loadDocument(jit, scratch, scratch); 210 DOMJIT::toWrapper<Document>(jit, params, scratch, globalObject, result, toWrapperSlow<Document>, globalObjectValue);190 DOMJIT::toWrapper<Document>(jit, params, scratch, globalObject, result, DOMJIT::toWrapperSlow<Document>, globalObjectValue); 211 191 done.link(&jit); 212 192 return CCallHelpers::JumpList();
Note: See TracChangeset
for help on using the changeset viewer.