Changeset 167794 in webkit
- Timestamp:
- Apr 25, 2014 12:55:19 AM (10 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 29 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r167793 r167794 1 2014-04-25 Darin Adler <darin@apple.com> 2 3 ASSERTION FAILED: "!m_isolatedWorld->isNormal() || m_wrapper || !m_jsFunction" in svg/custom/use-instanceRoot-event-listeners.xhtml 4 https://bugs.webkit.org/show_bug.cgi?id=132148 5 6 Reviewed by Andreas Kling. 7 8 Changed how JSCustomMarkFunction generation works. Instead of leaving out 9 the generated visitChildren function, just generate a call to visitAdditionalChildren. 10 This eliminates the need to repeat boilerplate. 11 12 The fix for the above bug was to correct mistaken logic where JSSVGElementInstance 13 had a visitChildren that did not properly mark event listeners because it explicitly 14 did not call through to the base class visitChildren. The new arrangement makes that 15 mistake impossible. 16 17 * bindings/js/JSAttrCustom.cpp: 18 (WebCore::JSAttr::visitAdditionalChildren): Use this instead of visitChildren. 19 * bindings/js/JSAudioTrackCustom.cpp: 20 (WebCore::JSAudioTrack::visitAdditionalChildren): Ditto. 21 * bindings/js/JSAudioTrackListCustom.cpp: 22 (WebCore::JSAudioTrackList::visitAdditionalChildren): Ditto. 23 * bindings/js/JSCSSRuleCustom.cpp: 24 (WebCore::JSCSSRule::visitAdditionalChildren): Ditto. 25 * bindings/js/JSCSSStyleDeclarationCustom.cpp: 26 (WebCore::JSCSSStyleDeclaration::visitAdditionalChildren): Ditto. 27 * bindings/js/JSCanvasRenderingContextCustom.cpp: 28 (WebCore::JSCanvasRenderingContext::visitAdditionalChildren): Ditto. 29 * bindings/js/JSCryptoKeyPairCustom.cpp: 30 (WebCore::JSCryptoKeyPair::visitAdditionalChildren): Ditto. 31 * bindings/js/JSDOMWindowCustom.cpp: 32 (WebCore::JSDOMWindow::visitAdditionalChildren): Ditto. 33 * bindings/js/JSMessageChannelCustom.cpp: 34 (WebCore::JSMessageChannel::visitAdditionalChildren): Ditto. 35 * bindings/js/JSMessagePortCustom.cpp: 36 (WebCore::JSMessagePort::visitAdditionalChildren): Ditto. 37 * bindings/js/JSNodeCustom.cpp: 38 (WebCore::JSNode::visitAdditionalChildren): Ditto. 39 * bindings/js/JSNodeFilterCustom.cpp: 40 (WebCore::JSNodeFilter::visitAdditionalChildren): Ditto. 41 * bindings/js/JSNodeIteratorCustom.cpp: 42 (WebCore::JSNodeIterator::visitAdditionalChildren): Ditto. 43 * bindings/js/JSSVGElementInstanceCustom.cpp: 44 (WebCore::JSSVGElementInstance::visitAdditionalChildren): Ditto. 45 * bindings/js/JSSharedWorkerCustom.cpp: 46 (WebCore::JSSharedWorker::visitAdditionalChildren): Ditto. 47 * bindings/js/JSStyleSheetCustom.cpp: 48 (WebCore::JSStyleSheet::visitAdditionalChildren): Ditto. 49 * bindings/js/JSTextTrackCueCustom.cpp: 50 (WebCore::JSTextTrackCue::visitAdditionalChildren): Ditto. 51 * bindings/js/JSTextTrackCustom.cpp: 52 (WebCore::JSTextTrack::visitAdditionalChildren): Ditto. 53 * bindings/js/JSTextTrackListCustom.cpp: 54 (WebCore::JSTextTrackList::visitAdditionalChildren): Ditto. 55 * bindings/js/JSTreeWalkerCustom.cpp: 56 (WebCore::JSTreeWalker::visitAdditionalChildren): Ditto. 57 * bindings/js/JSVideoTrackCustom.cpp: 58 (WebCore::JSVideoTrack::visitAdditionalChildren): Ditto. 59 * bindings/js/JSVideoTrackListCustom.cpp: 60 (WebCore::JSVideoTrackList::visitAdditionalChildren): Ditto. 61 * bindings/js/JSWebGLRenderingContextCustom.cpp: 62 (WebCore::JSWebGLRenderingContext::visitAdditionalChildren): Ditto. 63 * bindings/js/JSWorkerGlobalScopeCustom.cpp: 64 (WebCore::JSWorkerGlobalScope::visitAdditionalChildren): Ditto. 65 * bindings/js/JSXMLHttpRequestCustom.cpp: 66 (WebCore::JSXMLHttpRequest::visitAdditionalChildren): Ditto. 67 * bindings/js/JSXPathResultCustom.cpp: 68 (WebCore::JSXPathResult::visitAdditionalChildren): Ditto. 69 70 * bindings/js/JSDOMGlobalObject.cpp: 71 (WebCore::JSDOMGlobalObject::visitChildren): Rewrote to use modern for loops. 72 73 * bindings/scripts/CodeGeneratorJS.pm: 74 (GenerateHeader): Generate declaration of visitAdditionalChildren. 75 (GenerateImplementation): Generate call to visitAdditionalChildren. 76 1 77 2014-04-24 Andreas Kling <akling@apple.com> 2 78 -
trunk/Source/WebCore/bindings/js/JSAttrCustom.cpp
r165676 r167794 30 30 #include "JSAttr.h" 31 31 32 #include "Document.h"33 32 #include "Element.h" 34 #include "HTMLNames.h"35 36 using namespace JSC;37 33 38 34 namespace WebCore { 39 35 40 using namespace HTMLNames; 41 42 void JSAttr::visitChildren(JSCell* cell, SlotVisitor& visitor) 36 void JSAttr::visitAdditionalChildren(JSC::SlotVisitor& visitor) 43 37 { 44 JSAttr* thisObject = jsCast<JSAttr*>(cell); 45 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 46 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 47 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 48 49 Base::visitChildren(thisObject, visitor); 50 Element* element = thisObject->impl().ownerElement(); 51 if (!element) 52 return; 53 visitor.addOpaqueRoot(root(element)); 38 if (Element* element = impl().ownerElement()) 39 visitor.addOpaqueRoot(root(element)); 54 40 } 55 41 -
trunk/Source/WebCore/bindings/js/JSAudioTrackCustom.cpp
r165676 r167794 36 36 namespace WebCore { 37 37 38 void JSAudioTrack::visit Children(JSCell* cell,SlotVisitor& visitor)38 void JSAudioTrack::visitAdditionalChildren(SlotVisitor& visitor) 39 39 { 40 JSAudioTrack* jsAudioTrack = jsCast<JSAudioTrack*>(cell); 41 ASSERT_GC_OBJECT_INHERITS(jsAudioTrack, info()); 42 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 43 ASSERT(jsAudioTrack->structure()->typeInfo().overridesVisitChildren()); 44 Base::visitChildren(jsAudioTrack, visitor); 45 46 AudioTrack& audioTrack = jsAudioTrack->impl(); 47 visitor.addOpaqueRoot(root(&audioTrack)); 40 visitor.addOpaqueRoot(root(&impl())); 48 41 } 49 42 50 43 void JSAudioTrack::setKind(ExecState* exec, JSValue value) 51 44 { 52 UNUSED_PARAM(exec);53 45 #if ENABLE(MEDIA_SOURCE) 54 46 const String& nativeValue(value.isEmpty() ? String() : value.toString(exec)->value(exec)); … … 57 49 impl().setKind(nativeValue); 58 50 #else 51 UNUSED_PARAM(exec); 59 52 UNUSED_PARAM(value); 60 return;61 53 #endif 62 54 } … … 64 56 void JSAudioTrack::setLanguage(ExecState* exec, JSValue value) 65 57 { 66 UNUSED_PARAM(exec);67 58 #if ENABLE(MEDIA_SOURCE) 68 59 const String& nativeValue(value.isEmpty() ? String() : value.toString(exec)->value(exec)); … … 71 62 impl().setLanguage(nativeValue); 72 63 #else 64 UNUSED_PARAM(exec); 73 65 UNUSED_PARAM(value); 74 return;75 66 #endif 76 67 } -
trunk/Source/WebCore/bindings/js/JSAudioTrackListCustom.cpp
r165676 r167794 27 27 28 28 #if ENABLE(VIDEO_TRACK) 29 29 30 #include "JSAudioTrackList.h" 30 31 … … 36 37 namespace WebCore { 37 38 38 void JSAudioTrackList::visit Children(JSCell* cell,SlotVisitor& visitor)39 void JSAudioTrackList::visitAdditionalChildren(SlotVisitor& visitor) 39 40 { 40 JSAudioTrackList* jsAudioTrackList = jsCast<JSAudioTrackList*>(cell); 41 ASSERT_GC_OBJECT_INHERITS(jsAudioTrackList, info()); 42 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 43 ASSERT(jsAudioTrackList->structure()->typeInfo().overridesVisitChildren()); 44 Base::visitChildren(jsAudioTrackList, visitor); 45 46 AudioTrackList& audioTrackList = jsAudioTrackList->impl(); 47 visitor.addOpaqueRoot(root(audioTrackList.element())); 48 audioTrackList.visitJSEventListeners(visitor); 41 visitor.addOpaqueRoot(root(impl().element())); 49 42 } 50 43 -
trunk/Source/WebCore/bindings/js/JSCSSRuleCustom.cpp
r166128 r167794 56 56 namespace WebCore { 57 57 58 void JSCSSRule::visit Children(JSCell* cell,SlotVisitor& visitor)58 void JSCSSRule::visitAdditionalChildren(SlotVisitor& visitor) 59 59 { 60 JSCSSRule* thisObject = jsCast<JSCSSRule*>(cell); 61 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 62 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 63 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 64 Base::visitChildren(thisObject, visitor); 65 visitor.addOpaqueRoot(root(&thisObject->impl())); 60 visitor.addOpaqueRoot(root(&impl())); 66 61 } 67 62 -
trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp
r167240 r167794 46 46 47 47 using namespace JSC; 48 using namespace WTF;49 48 50 49 namespace WebCore { 51 50 52 void JSCSSStyleDeclaration::visitChildren(JSCell* cell, SlotVisitor& visitor) 53 { 54 JSCSSStyleDeclaration* thisObject = jsCast<JSCSSStyleDeclaration*>(cell); 55 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 56 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 57 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 58 Base::visitChildren(thisObject, visitor); 59 visitor.addOpaqueRoot(root(&thisObject->impl())); 51 void JSCSSStyleDeclaration::visitAdditionalChildren(SlotVisitor& visitor) 52 { 53 visitor.addOpaqueRoot(root(&impl())); 60 54 } 61 55 … … 66 60 }; 67 61 68 enum PropertyNamePrefix 69 { 62 enum PropertyNamePrefix { 70 63 PropertyNamePrefixNone, 71 64 PropertyNamePrefixCSS, -
trunk/Source/WebCore/bindings/js/JSCanvasRenderingContextCustom.cpp
r166128 r167794 31 31 #include "JSCanvasRenderingContext2D.h" 32 32 #include "JSNode.h" 33 33 34 #if ENABLE(WEBGL) 35 #include "JSWebGLRenderingContext.h" 34 36 #include "WebGLRenderingContext.h" 35 #include "JSWebGLRenderingContext.h"36 37 #endif 37 38 … … 40 41 namespace WebCore { 41 42 42 void JSCanvasRenderingContext::visit Children(JSCell* cell,SlotVisitor& visitor)43 void JSCanvasRenderingContext::visitAdditionalChildren(SlotVisitor& visitor) 43 44 { 44 JSCanvasRenderingContext* thisObject = jsCast<JSCanvasRenderingContext*>(cell); 45 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 46 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 47 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 48 Base::visitChildren(thisObject, visitor); 49 50 visitor.addOpaqueRoot(root(thisObject->impl().canvas())); 45 visitor.addOpaqueRoot(root(impl().canvas())); 51 46 } 52 47 -
trunk/Source/WebCore/bindings/js/JSCryptoKeyPairCustom.cpp
r159068 r167794 29 29 #if ENABLE(SUBTLE_CRYPTO) 30 30 31 using namespace JSC;32 33 31 namespace WebCore { 34 32 35 void JSCryptoKeyPair::visit Children(JSCell* cell,SlotVisitor& visitor)33 void JSCryptoKeyPair::visitAdditionalChildren(JSC::SlotVisitor& visitor) 36 34 { 37 JSCryptoKeyPair* thisObject = jsCast<JSCryptoKeyPair*>(cell); 38 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 39 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 40 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 41 Base::visitChildren(thisObject, visitor); 42 43 visitor.addOpaqueRoot(thisObject->m_impl->publicKey()); 44 visitor.addOpaqueRoot(thisObject->m_impl->privateKey()); 35 visitor.addOpaqueRoot(impl().publicKey()); 36 visitor.addOpaqueRoot(impl().privateKey()); 45 37 } 46 38 -
trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp
r166823 r167794 92 92 Base::visitChildren(thisObject, visitor); 93 93 94 JSDOMStructureMap::iterator end = thisObject->structures().end(); 95 for (JSDOMStructureMap::iterator it = thisObject->structures().begin(); it != end; ++it) 96 visitor.append(&it->value); 94 for (auto& structure : thisObject->structures().values()) 95 visitor.append(&structure); 97 96 98 JSDOMConstructorMap::iterator end2 = thisObject->constructors().end(); 99 for (JSDOMConstructorMap::iterator it2 = thisObject->constructors().begin(); it2 != end2; ++it2) 100 visitor.append(&it2->value); 97 for (auto& constructor : thisObject->constructors().values()) 98 visitor.append(&constructor); 101 99 } 102 100 -
trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp
r165914 r167794 59 59 namespace WebCore { 60 60 61 void JSDOMWindow::visitChildren(JSCell* cell, SlotVisitor& visitor) 62 { 63 JSDOMWindow* thisObject = jsCast<JSDOMWindow*>(cell); 64 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 65 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 66 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 67 Base::visitChildren(thisObject, visitor); 68 69 thisObject->impl().visitJSEventListeners(visitor); 70 if (Frame* frame = thisObject->impl().frame()) 61 void JSDOMWindow::visitAdditionalChildren(SlotVisitor& visitor) 62 { 63 if (Frame* frame = impl().frame()) 71 64 visitor.addOpaqueRoot(frame); 72 65 } -
trunk/Source/WebCore/bindings/js/JSMessageChannelCustom.cpp
r154038 r167794 30 30 #include "JSMessageChannel.h" 31 31 32 #include "MessageChannel.h"33 #include <runtime/Error.h>34 35 using namespace JSC;36 37 32 namespace WebCore { 38 33 39 void JSMessageChannel::visit Children(JSCell* cell,SlotVisitor& visitor)34 void JSMessageChannel::visitAdditionalChildren(JSC::SlotVisitor& visitor) 40 35 { 41 JSMessageChannel* thisObject = jsCast<JSMessageChannel*>(cell); 42 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 43 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 44 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 45 Base::visitChildren(thisObject, visitor); 46 47 if (MessagePort* port = thisObject->m_impl->port1()) 36 if (MessagePort* port = impl().port1()) 48 37 visitor.addOpaqueRoot(port); 49 38 50 if (MessagePort* port = thisObject->m_impl->port2())39 if (MessagePort* port = impl().port2()) 51 40 visitor.addOpaqueRoot(port); 52 41 } -
trunk/Source/WebCore/bindings/js/JSMessagePortCustom.cpp
r163844 r167794 44 44 namespace WebCore { 45 45 46 void JSMessagePort::visit Children(JSCell* cell,SlotVisitor& visitor)46 void JSMessagePort::visitAdditionalChildren(SlotVisitor& visitor) 47 47 { 48 JSMessagePort* thisObject = jsCast<JSMessagePort*>(cell);49 ASSERT_GC_OBJECT_INHERITS(thisObject, info());50 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag);51 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren());52 Base::visitChildren(thisObject, visitor);53 54 48 // If we have a locally entangled port, we can directly mark it as reachable. Ports that are remotely entangled are marked in-use by markActiveObjectsForContext(). 55 if (MessagePort* port = thisObject->m_impl->locallyEntangledPort())49 if (MessagePort* port = impl().locallyEntangledPort()) 56 50 visitor.addOpaqueRoot(port); 57 58 thisObject->m_impl->visitJSEventListeners(visitor);59 51 } 60 52 -
trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp
r166823 r167794 180 180 } 181 181 182 void JSNode::visitChildren(JSCell* cell, SlotVisitor& visitor) 183 { 184 JSNode* thisObject = jsCast<JSNode*>(cell); 185 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 186 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 187 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 188 Base::visitChildren(thisObject, visitor); 189 190 Node& node = thisObject->impl(); 191 node.visitJSEventListeners(visitor); 192 193 visitor.addOpaqueRoot(root(node)); 182 void JSNode::visitAdditionalChildren(SlotVisitor& visitor) 183 { 184 visitor.addOpaqueRoot(root(impl())); 194 185 } 195 186 -
trunk/Source/WebCore/bindings/js/JSNodeFilterCustom.cpp
r165676 r167794 27 27 #include "JSNodeFilter.h" 28 28 29 #include "JSDOMWindowBase.h"30 #include "JSNode.h"31 29 #include "JSNodeFilterCondition.h" 32 #include "NodeFilter.h"33 #include "JSDOMBinding.h"34 35 using namespace JSC;36 30 37 31 namespace WebCore { 38 32 39 void JSNodeFilter::visit Children(JSCell* cell,SlotVisitor& visitor)33 void JSNodeFilter::visitAdditionalChildren(JSC::SlotVisitor& visitor) 40 34 { 41 JSNodeFilter* thisObject = jsCast<JSNodeFilter*>(cell); 42 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 43 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 44 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 45 Base::visitChildren(thisObject, visitor); 46 visitor.addOpaqueRoot(&thisObject->impl()); 35 visitor.addOpaqueRoot(&impl()); 47 36 } 48 37 49 PassRefPtr<NodeFilter> toNodeFilter( VM& vm,JSValue value)38 PassRefPtr<NodeFilter> toNodeFilter(JSC::VM& vm, JSC::JSValue value) 50 39 { 51 40 if (value.inherits(JSNodeFilter::info())) 52 return & jsCast<JSNodeFilter*>(asObject(value))->impl();41 return &JSC::jsCast<JSNodeFilter*>(asObject(value))->impl(); 53 42 54 43 RefPtr<NodeFilter> result = NodeFilter::create(); -
trunk/Source/WebCore/bindings/js/JSNodeIteratorCustom.cpp
r154038 r167794 21 21 #include "JSNodeIterator.h" 22 22 23 #include "JSNode.h"24 23 #include "Node.h" 25 #include "NodeFilter.h"26 #include "NodeIterator.h"27 28 using namespace JSC;29 24 30 25 namespace WebCore { 31 26 32 void JSNodeIterator::visit Children(JSCell* cell,SlotVisitor& visitor)27 void JSNodeIterator::visitAdditionalChildren(JSC::SlotVisitor& visitor) 33 28 { 34 JSNodeIterator* thisObject = jsCast<JSNodeIterator*>(cell); 35 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 36 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 37 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 38 Base::visitChildren(thisObject, visitor); 39 40 if (NodeFilter* filter = thisObject->m_impl->filter()) 29 if (NodeFilter* filter = impl().filter()) 41 30 visitor.addOpaqueRoot(filter); 42 31 } -
trunk/Source/WebCore/bindings/js/JSSVGElementInstanceCustom.cpp
r165676 r167794 28 28 #include "JSSVGElementInstance.h" 29 29 30 #include "JSEventTarget.h"31 30 #include "JSNodeCustom.h" 32 31 33 32 namespace WebCore { 34 33 35 void JSSVGElementInstance::visit Children(JSC::JSCell* cell,JSC::SlotVisitor& visitor)34 void JSSVGElementInstance::visitAdditionalChildren(JSC::SlotVisitor& visitor) 36 35 { 37 JSSVGElementInstance* thisObject = JSC::jsCast<JSSVGElementInstance*>(cell); 38 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 39 COMPILE_ASSERT(StructureFlags & JSC::OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 40 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 41 // Skip JSEventTarget::visitChildren because event listener registration is 42 // forwarded to the corresponding element. 43 JSEventTarget::Base::visitChildren(thisObject, visitor); 44 visitor.addOpaqueRoot(root(thisObject->impl().correspondingElement())); 36 visitor.addOpaqueRoot(root(impl().correspondingElement())); 45 37 } 46 38 -
trunk/Source/WebCore/bindings/js/JSSharedWorkerCustom.cpp
r157215 r167794 45 45 namespace WebCore { 46 46 47 void JSSharedWorker::visit Children(JSCell* cell,SlotVisitor& visitor)47 void JSSharedWorker::visitAdditionalChildren(SlotVisitor& visitor) 48 48 { 49 JSSharedWorker* thisObject = jsCast<JSSharedWorker*>(cell); 50 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 51 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 52 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 53 Base::visitChildren(thisObject, visitor); 54 55 if (MessagePort* port = thisObject->impl().port()) 49 if (MessagePort* port = impl().port()) 56 50 visitor.addOpaqueRoot(port); 57 51 } -
trunk/Source/WebCore/bindings/js/JSStyleSheetCustom.cpp
r166128 r167794 27 27 #include "JSStyleSheet.h" 28 28 29 #include "CSSStyleSheet.h"30 #include "Node.h"31 29 #include "JSCSSStyleSheet.h" 32 #include "JSNode.h"33 34 using namespace JSC;35 30 36 31 namespace WebCore { 37 32 38 void JSStyleSheet::visit Children(JSCell* cell,SlotVisitor& visitor)33 void JSStyleSheet::visitAdditionalChildren(JSC::SlotVisitor& visitor) 39 34 { 40 JSStyleSheet* thisObject = jsCast<JSStyleSheet*>(cell); 41 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 42 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 43 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 44 Base::visitChildren(thisObject, visitor); 45 visitor.addOpaqueRoot(root(&thisObject->impl())); 35 visitor.addOpaqueRoot(root(&impl())); 46 36 } 47 37 48 JS Value toJS(ExecState*, JSDOMGlobalObject* globalObject, StyleSheet* styleSheet)38 JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject* globalObject, StyleSheet* styleSheet) 49 39 { 50 40 if (!styleSheet) 51 return jsNull();41 return JSC::jsNull(); 52 42 53 JSObject* wrapper = getCachedWrapper(globalObject->world(), styleSheet); 54 if (wrapper) 43 if (JSC::JSObject* wrapper = getCachedWrapper(globalObject->world(), styleSheet)) 55 44 return wrapper; 56 45 57 46 if (styleSheet->isCSSStyleSheet()) 58 wrapper = CREATE_DOM_WRAPPER(globalObject, CSSStyleSheet, styleSheet); 59 else 60 wrapper = CREATE_DOM_WRAPPER(globalObject, StyleSheet, styleSheet); 47 return CREATE_DOM_WRAPPER(globalObject, CSSStyleSheet, styleSheet); 61 48 62 return wrapper;49 return CREATE_DOM_WRAPPER(globalObject, StyleSheet, styleSheet); 63 50 } 64 51 -
trunk/Source/WebCore/bindings/js/JSTextTrackCueCustom.cpp
r166128 r167794 28 28 #if ENABLE(VIDEO_TRACK) 29 29 30 #include "JSTextTrackCue.h" 31 30 32 #include "JSDataCue.h" 31 #include "JSTextTrackCue.h"32 33 #include "JSTrackCustom.h" 33 34 #include "JSVTTCue.h" … … 82 83 } 83 84 84 void JSTextTrackCue::visit Children(JSCell* cell,SlotVisitor& visitor)85 void JSTextTrackCue::visitAdditionalChildren(SlotVisitor& visitor) 85 86 { 86 JSTextTrackCue* jsTextTrackCue = jsCast<JSTextTrackCue*>(cell); 87 ASSERT_GC_OBJECT_INHERITS(jsTextTrackCue, info()); 88 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 89 ASSERT(jsTextTrackCue->structure()->typeInfo().overridesVisitChildren()); 90 Base::visitChildren(jsTextTrackCue, visitor); 91 92 // Mark the cue's track root if it has one. 93 TextTrackCue& textTrackCue = jsTextTrackCue->impl(); 94 if (TextTrack* textTrack = textTrackCue.track()) 87 if (TextTrack* textTrack = impl().track()) 95 88 visitor.addOpaqueRoot(root(textTrack)); 96 97 textTrackCue.visitJSEventListeners(visitor);98 89 } 99 90 -
trunk/Source/WebCore/bindings/js/JSTextTrackCustom.cpp
r165676 r167794 27 27 28 28 #if ENABLE(VIDEO_TRACK) 29 29 30 #include "JSTextTrack.h" 31 30 32 #include "JSTextTrackCueList.h" 31 33 #include "JSTrackCustom.h" … … 35 37 namespace WebCore { 36 38 37 void JSTextTrack::visit Children(JSCell* cell,SlotVisitor& visitor)39 void JSTextTrack::visitAdditionalChildren(SlotVisitor& visitor) 38 40 { 39 JSTextTrack* jsTextTrack = jsCast<JSTextTrack*>(cell); 40 ASSERT_GC_OBJECT_INHERITS(jsTextTrack, info()); 41 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 42 ASSERT(jsTextTrack->structure()->typeInfo().overridesVisitChildren()); 43 Base::visitChildren(jsTextTrack, visitor); 44 45 TextTrack& textTrack = jsTextTrack->impl(); 46 visitor.addOpaqueRoot(root(&textTrack)); 47 48 textTrack.visitJSEventListeners(visitor); 41 visitor.addOpaqueRoot(root(&impl())); 49 42 } 50 43 -
trunk/Source/WebCore/bindings/js/JSTextTrackListCustom.cpp
r165676 r167794 27 27 28 28 #if ENABLE(VIDEO_TRACK) 29 29 30 #include "JSTextTrackList.h" 30 31 … … 36 37 namespace WebCore { 37 38 38 void JSTextTrackList::visit Children(JSCell* cell,SlotVisitor& visitor)39 void JSTextTrackList::visitAdditionalChildren(JSC::SlotVisitor& visitor) 39 40 { 40 JSTextTrackList* jsTextTrackList = jsCast<JSTextTrackList*>(cell); 41 ASSERT_GC_OBJECT_INHERITS(jsTextTrackList, info()); 42 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 43 ASSERT(jsTextTrackList->structure()->typeInfo().overridesVisitChildren()); 44 Base::visitChildren(jsTextTrackList, visitor); 45 46 TextTrackList& textTrackList = jsTextTrackList->impl(); 47 visitor.addOpaqueRoot(root(textTrackList.element())); 48 textTrackList.visitJSEventListeners(visitor); 41 visitor.addOpaqueRoot(root(impl().element())); 49 42 } 50 43 -
trunk/Source/WebCore/bindings/js/JSTreeWalkerCustom.cpp
r154038 r167794 21 21 #include "JSTreeWalker.h" 22 22 23 #include "JSNode.h"24 23 #include "Node.h" 25 #include "NodeFilter.h"26 #include "TreeWalker.h"27 28 using namespace JSC;29 24 30 25 namespace WebCore { 31 26 32 void JSTreeWalker::visit Children(JSCell* cell,SlotVisitor& visitor)27 void JSTreeWalker::visitAdditionalChildren(JSC::SlotVisitor& visitor) 33 28 { 34 JSTreeWalker* thisObject = jsCast<JSTreeWalker*>(cell); 35 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 36 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 37 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 38 Base::visitChildren(thisObject, visitor); 39 40 if (NodeFilter* filter = thisObject->m_impl->filter()) 29 if (NodeFilter* filter = impl().filter()) 41 30 visitor.addOpaqueRoot(filter); 42 31 } -
trunk/Source/WebCore/bindings/js/JSVideoTrackCustom.cpp
r165676 r167794 36 36 namespace WebCore { 37 37 38 void JSVideoTrack::visit Children(JSCell* cell,SlotVisitor& visitor)38 void JSVideoTrack::visitAdditionalChildren(SlotVisitor& visitor) 39 39 { 40 JSVideoTrack* jsVideoTrack = jsCast<JSVideoTrack*>(cell); 41 ASSERT_GC_OBJECT_INHERITS(jsVideoTrack, info()); 42 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 43 ASSERT(jsVideoTrack->structure()->typeInfo().overridesVisitChildren()); 44 Base::visitChildren(jsVideoTrack, visitor); 45 46 VideoTrack& videoTrack = jsVideoTrack->impl(); 47 visitor.addOpaqueRoot(root(&videoTrack)); 40 visitor.addOpaqueRoot(root(&impl())); 48 41 } 49 42 -
trunk/Source/WebCore/bindings/js/JSVideoTrackListCustom.cpp
r165676 r167794 27 27 28 28 #if ENABLE(VIDEO_TRACK) 29 29 30 #include "JSVideoTrackList.h" 30 31 31 #include "Element.h"32 32 #include "JSNodeCustom.h" 33 33 … … 36 36 namespace WebCore { 37 37 38 void JSVideoTrackList::visit Children(JSCell* cell,SlotVisitor& visitor)38 void JSVideoTrackList::visitAdditionalChildren(SlotVisitor& visitor) 39 39 { 40 JSVideoTrackList* jsVideoTrackList = jsCast<JSVideoTrackList*>(cell); 41 ASSERT_GC_OBJECT_INHERITS(jsVideoTrackList, info()); 42 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 43 ASSERT(jsVideoTrackList->structure()->typeInfo().overridesVisitChildren()); 44 Base::visitChildren(jsVideoTrackList, visitor); 45 46 VideoTrackList& videoTrackList = jsVideoTrackList->impl(); 47 visitor.addOpaqueRoot(root(videoTrackList.element())); 48 videoTrackList.visitJSEventListeners(visitor); 40 visitor.addOpaqueRoot(root(impl().element())); 49 41 } 50 42 -
trunk/Source/WebCore/bindings/js/JSWebGLRenderingContextCustom.cpp
r165676 r167794 243 243 } 244 244 245 void JSWebGLRenderingContext::visitChildren(JSCell* cell, SlotVisitor& visitor) 246 { 247 JSWebGLRenderingContext* thisObject = jsCast<JSWebGLRenderingContext*>(cell); 248 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 249 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 250 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 251 Base::visitChildren(thisObject, visitor); 252 visitor.addOpaqueRoot(&thisObject->impl()); 245 void JSWebGLRenderingContext::visitAdditionalChildren(SlotVisitor& visitor) 246 { 247 visitor.addOpaqueRoot(&impl()); 253 248 } 254 249 -
trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeCustom.cpp
r165914 r167794 52 52 namespace WebCore { 53 53 54 void JSWorkerGlobalScope::visit Children(JSCell* cell,SlotVisitor& visitor)54 void JSWorkerGlobalScope::visitAdditionalChildren(SlotVisitor& visitor) 55 55 { 56 JSWorkerGlobalScope* thisObject = jsCast<JSWorkerGlobalScope*>(cell); 57 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 58 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 59 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 60 Base::visitChildren(thisObject, visitor); 61 62 if (WorkerLocation* location = thisObject->impl().optionalLocation()) 56 if (WorkerLocation* location = impl().optionalLocation()) 63 57 visitor.addOpaqueRoot(location); 64 if (WorkerNavigator* navigator = thisObject->impl().optionalNavigator())58 if (WorkerNavigator* navigator = impl().optionalNavigator()) 65 59 visitor.addOpaqueRoot(navigator); 66 67 thisObject->impl().visitJSEventListeners(visitor);68 60 } 69 61 -
trunk/Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp
r165676 r167794 57 57 namespace WebCore { 58 58 59 void JSXMLHttpRequest::visitChildren(JSCell* cell, SlotVisitor& visitor) 60 { 61 JSXMLHttpRequest* thisObject = jsCast<JSXMLHttpRequest*>(cell); 62 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 63 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 64 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 65 Base::visitChildren(thisObject, visitor); 66 67 if (XMLHttpRequestUpload* upload = thisObject->m_impl->optionalUpload()) 59 void JSXMLHttpRequest::visitAdditionalChildren(SlotVisitor& visitor) 60 { 61 if (XMLHttpRequestUpload* upload = impl().optionalUpload()) 68 62 visitor.addOpaqueRoot(upload); 69 63 70 if (Document* responseDocument = thisObject->m_impl->optionalResponseXML())64 if (Document* responseDocument = impl().optionalResponseXML()) 71 65 visitor.addOpaqueRoot(responseDocument); 72 66 73 if (ArrayBuffer* responseArrayBuffer = thisObject->m_impl->optionalResponseArrayBuffer())67 if (ArrayBuffer* responseArrayBuffer = impl().optionalResponseArrayBuffer()) 74 68 visitor.addOpaqueRoot(responseArrayBuffer); 75 69 76 if (Blob* responseBlob = thisObject->m_impl->optionalResponseBlob())70 if (Blob* responseBlob = impl().optionalResponseBlob()) 77 71 visitor.addOpaqueRoot(responseBlob); 78 72 79 if (thisObject->m_response) 80 visitor.append(&thisObject->m_response); 81 82 thisObject->m_impl->visitJSEventListeners(visitor); 73 if (m_response) 74 visitor.append(&m_response); 83 75 } 84 76 -
trunk/Source/WebCore/bindings/js/JSXPathResultCustom.cpp
r157215 r167794 27 27 #include "JSXPathResult.h" 28 28 29 #include "JSDOMBinding.h"30 29 #include "JSNodeCustom.h" 31 #include "XPathResult.h"32 30 #include "XPathValue.h" 33 34 using namespace JSC;35 31 36 32 namespace WebCore { 37 33 38 void JSXPathResult::visit Children(JSCell* cell,SlotVisitor& visitor)34 void JSXPathResult::visitAdditionalChildren(JSC::SlotVisitor& visitor) 39 35 { 40 JSXPathResult* thisObject = jsCast<JSXPathResult*>(cell); 41 ASSERT_GC_OBJECT_INHERITS(thisObject, info()); 42 COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag); 43 ASSERT(thisObject->structure()->typeInfo().overridesVisitChildren()); 44 Base::visitChildren(thisObject, visitor); 45 46 const XPath::Value& xpathValue = thisObject->impl().value(); 47 if (xpathValue.isNodeSet()) { 48 const XPath::NodeSet& nodesToMark = xpathValue.toNodeSet(); 49 for (size_t i = 0; i < nodesToMark.size(); ++i) { 50 Node* node = nodesToMark[i]; 51 visitor.addOpaqueRoot(root(node)); 52 } 36 auto& value = impl().value(); 37 if (value.isNodeSet()) { 38 for (auto& node : value.toNodeSet()) 39 visitor.addOpaqueRoot(root(node.get())); 53 40 } 54 41 } -
trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
r167466 r167794 767 767 my $interface = shift; 768 768 return $interface->extendedAttributes->{"JSCustomMarkFunction"} 769 || $interface->extendedAttributes->{"EventTarget"}770 || $interface->name eq "EventTarget"771 || $interface->extendedAttributes->{"ReportExtraMemoryCost"};769 || $interface->extendedAttributes->{"EventTarget"} 770 || $interface->name eq "EventTarget" 771 || $interface->extendedAttributes->{"ReportExtraMemoryCost"}; 772 772 } 773 773 … … 1018 1018 # visit function 1019 1019 if ($needsVisitChildren) { 1020 push(@headerContent, " static void visitChildren(JSCell*, JSC::SlotVisitor&);\n\n"); 1020 push(@headerContent, " static void visitChildren(JSCell*, JSC::SlotVisitor&);\n"); 1021 push(@headerContent, " void visitAdditionalChildren(JSC::SlotVisitor&);\n") if $interface->extendedAttributes->{"JSCustomMarkFunction"}; 1022 push(@headerContent, "\n"); 1021 1023 $structureFlags{"JSC::OverridesVisitChildren"} = 1; 1022 1024 } … … 2777 2779 } 2778 2780 2779 if ($needsVisitChildren && !$interface->extendedAttributes->{"JSCustomMarkFunction"}) {2781 if ($needsVisitChildren) { 2780 2782 push(@implContent, "void ${className}::visitChildren(JSCell* cell, SlotVisitor& visitor)\n"); 2781 2783 push(@implContent, "{\n"); … … 2788 2790 push(@implContent, " thisObject->impl().visitJSEventListeners(visitor);\n"); 2789 2791 } 2792 push(@implContent, " thisObject->visitAdditionalChildren(visitor);\n") if $interface->extendedAttributes->{"JSCustomMarkFunction"}; 2790 2793 if ($interface->extendedAttributes->{"ReportExtraMemoryCost"}) { 2791 2794 push(@implContent, " visitor.reportExtraMemoryUsage(cell, thisObject->impl().memoryCost());\n");
Note: See TracChangeset
for help on using the changeset viewer.