Skip to content
  • mhahnenberg@apple.com's avatar
    Add static version of JSCell::visitChildren · 982c9ea2
    mhahnenberg@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=68404
    
    Reviewed by Darin Adler.
    
    .: 
    
    In this patch we just extract the bodies of the virtual visitChildren methods
    throughout the JSCell inheritance hierarchy out into static methods, which are 
    now called from the virtual methods.  This is an intermediate step in trying to 
    move the virtual-ness of visitChildren into our own custom vtable stored in 
    ClassInfo.  We need to convert the methods to static methods in order to be 
    able to more easily store and refer to them in our custom vtable since normal 
    member methods store some implicit information in their types, making it 
    impossible to store them generically in ClassInfo.
    
    * Source/autotools/symbols.filter:
    
    Source/JavaScriptCore: 
    
    In this patch we just extract the bodies of the virtual visitChildren methods
    throughout the JSCell inheritance hierarchy out into static methods, which are 
    now called from the virtual methods.  This is an intermediate step in trying to 
    move the virtual-ness of visitChildren into our own custom vtable stored in 
    ClassInfo.  We need to convert the methods to static methods in order to be 
    able to more easily store and refer to them in our custom vtable since normal 
    member methods store some implicit information in their types, making it 
    impossible to store them generically in ClassInfo.
    
    * API/JSCallbackObject.h:
    (JSC::JSCallbackObject::visitChildrenVirtual):
    (JSC::JSCallbackObject::visitChildren):
    * JavaScriptCore.exp:
    * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
    * debugger/DebuggerActivation.cpp:
    (JSC::DebuggerActivation::visitChildrenVirtual):
    (JSC::DebuggerActivation::visitChildren):
    * debugger/DebuggerActivation.h:
    * heap/MarkStack.cpp:
    (JSC::SlotVisitor::visitChildren):
    (JSC::SlotVisitor::drain):
    * runtime/Arguments.cpp:
    (JSC::Arguments::visitChildrenVirtual):
    (JSC::Arguments::visitChildren):
    * runtime/Arguments.h:
    * runtime/Executable.cpp:
    (JSC::EvalExecutable::visitChildrenVirtual):
    (JSC::EvalExecutable::visitChildren):
    (JSC::ProgramExecutable::visitChildrenVirtual):
    (JSC::ProgramExecutable::visitChildren):
    (JSC::FunctionExecutable::visitChildrenVirtual):
    (JSC::FunctionExecutable::visitChildren):
    * runtime/Executable.h:
    * runtime/GetterSetter.cpp:
    (JSC::GetterSetter::visitChildrenVirtual):
    (JSC::GetterSetter::visitChildren):
    * runtime/GetterSetter.h:
    * runtime/JSActivation.cpp:
    (JSC::JSActivation::visitChildrenVirtual):
    (JSC::JSActivation::visitChildren):
    * runtime/JSActivation.h:
    * runtime/JSArray.cpp:
    (JSC::JSArray::visitChildrenVirtual):
    (JSC::JSArray::visitChildren):
    * runtime/JSArray.h:
    * runtime/JSBoundFunction.cpp:
    (JSC::JSBoundFunction::visitChildrenVirtual):
    (JSC::JSBoundFunction::visitChildren):
    * runtime/JSBoundFunction.h:
    * runtime/JSCell.h:
    (JSC::JSCell::visitChildrenVirtual):
    (JSC::JSCell::visitChildren):
    * runtime/JSFunction.cpp:
    (JSC::JSFunction::visitChildrenVirtual):
    (JSC::JSFunction::visitChildren):
    * runtime/JSFunction.h:
    * runtime/JSGlobalObject.cpp:
    (JSC::JSGlobalObject::visitChildrenVirtual):
    (JSC::JSGlobalObject::visitChildren):
    * runtime/JSGlobalObject.h:
    * runtime/JSObject.cpp:
    (JSC::JSObject::visitChildrenVirtual):
    (JSC::JSObject::visitChildren):
    * runtime/JSObject.h:
    (JSC::JSObject::visitChildrenDirect):
    * runtime/JSPropertyNameIterator.cpp:
    (JSC::JSPropertyNameIterator::visitChildrenVirtual):
    (JSC::JSPropertyNameIterator::visitChildren):
    * runtime/JSPropertyNameIterator.h:
    * runtime/JSStaticScopeObject.cpp:
    (JSC::JSStaticScopeObject::visitChildrenVirtual):
    (JSC::JSStaticScopeObject::visitChildren):
    * runtime/JSStaticScopeObject.h:
    * runtime/JSWrapperObject.cpp:
    (JSC::JSWrapperObject::visitChildrenVirtual):
    (JSC::JSWrapperObject::visitChildren):
    * runtime/JSWrapperObject.h:
    * runtime/NativeErrorConstructor.cpp:
    (JSC::NativeErrorConstructor::visitChildrenVirtual):
    (JSC::NativeErrorConstructor::visitChildren):
    * runtime/NativeErrorConstructor.h:
    * runtime/RegExpObject.cpp:
    (JSC::RegExpObject::visitChildrenVirtual):
    (JSC::RegExpObject::visitChildren):
    * runtime/RegExpObject.h:
    * runtime/ScopeChain.cpp:
    (JSC::ScopeChainNode::visitChildrenVirtual):
    (JSC::ScopeChainNode::visitChildren):
    * runtime/ScopeChain.h:
    * runtime/Structure.cpp:
    (JSC::Structure::visitChildrenVirtual):
    (JSC::Structure::visitChildren):
    * runtime/Structure.h:
    * runtime/StructureChain.cpp:
    (JSC::StructureChain::visitChildrenVirtual):
    (JSC::StructureChain::visitChildren):
    * runtime/StructureChain.h:
    
    Source/JavaScriptGlue: 
    
    In this patch we just extract the bodies of the virtual visitChildren methods
    throughout the JSCell inheritance hierarchy out into static methods, which are 
    now called from the virtual methods.  This is an intermediate step in trying to 
    move the virtual-ness of visitChildren into our own custom vtable stored in 
    ClassInfo.  We need to convert the methods to static methods in order to be 
    able to more easily store and refer to them in our custom vtable since normal 
    member methods store some implicit information in their types, making it 
    impossible to store them generically in ClassInfo.
    
    * UserObjectImp.cpp:
    (UserObjectImp::visitChildrenVirtual):
    (UserObjectImp::visitChildren):
    * UserObjectImp.h:
    
    Source/WebCore: 
    
    No new tests.
    
    In this patch we just extract the bodies of the virtual visitChildren methods
    throughout the JSCell inheritance hierarchy out into static methods, which are 
    now called from the virtual methods.  This is an intermediate step in trying to 
    move the virtual-ness of visitChildren into our own custom vtable stored in 
    ClassInfo.  We need to convert the methods to static methods in order to be 
    able to more easily store and refer to them in our custom vtable since normal 
    member methods store some implicit information in their types, making it 
    impossible to store them generically in ClassInfo.
    
    * WebCore.exp.in:
    * bindings/js/JSAttrCustom.cpp:
    (WebCore::JSAttr::visitChildrenVirtual):
    (WebCore::JSAttr::visitChildren):
    * bindings/js/JSAudioContextCustom.cpp:
    (WebCore::JSAudioContext::visitChildrenVirtual):
    (WebCore::JSAudioContext::visitChildren):
    * bindings/js/JSCSSRuleCustom.cpp:
    (WebCore::JSCSSRule::visitChildrenVirtual):
    (WebCore::JSCSSRule::visitChildren):
    * bindings/js/JSCSSStyleDeclarationCustom.cpp:
    (WebCore::JSCSSStyleDeclaration::visitChildrenVirtual):
    (WebCore::JSCSSStyleDeclaration::visitChildren):
    * bindings/js/JSCanvasRenderingContextCustom.cpp:
    (WebCore::JSCanvasRenderingContext::visitChildrenVirtual):
    (WebCore::JSCanvasRenderingContext::visitChildren):
    * bindings/js/JSDOMGlobalObject.cpp:
    (WebCore::JSDOMGlobalObject::visitChildrenVirtual):
    (WebCore::JSDOMGlobalObject::visitChildren):
    * bindings/js/JSDOMGlobalObject.h:
    * bindings/js/JSDOMWindowCustom.cpp:
    (WebCore::JSDOMWindow::visitChildrenVirtual):
    (WebCore::JSDOMWindow::visitChildren):
    * bindings/js/JSDOMWindowShell.cpp:
    (WebCore::JSDOMWindowShell::visitChildrenVirtual):
    (WebCore::JSDOMWindowShell::visitChildren):
    * bindings/js/JSDOMWindowShell.h:
    * bindings/js/JSJavaScriptAudioNodeCustom.cpp:
    (WebCore::JSJavaScriptAudioNode::visitChildrenVirtual):
    (WebCore::JSJavaScriptAudioNode::visitChildren):
    * bindings/js/JSMessageChannelCustom.cpp:
    (WebCore::JSMessageChannel::visitChildrenVirtual):
    (WebCore::JSMessageChannel::visitChildren):
    * bindings/js/JSMessagePortCustom.cpp:
    (WebCore::JSMessagePort::visitChildrenVirtual):
    (WebCore::JSMessagePort::visitChildren):
    * bindings/js/JSNamedNodeMapCustom.cpp:
    (WebCore::JSNamedNodeMap::visitChildrenVirtual):
    (WebCore::JSNamedNodeMap::visitChildren):
    * bindings/js/JSNodeCustom.cpp:
    (WebCore::JSNode::visitChildrenVirtual):
    (WebCore::JSNode::visitChildren):
    * bindings/js/JSNodeFilterCustom.cpp:
    (WebCore::JSNodeFilter::visitChildrenVirtual):
    (WebCore::JSNodeFilter::visitChildren):
    * bindings/js/JSNodeIteratorCustom.cpp:
    (WebCore::JSNodeIterator::visitChildrenVirtual):
    (WebCore::JSNodeIterator::visitChildren):
    * bindings/js/JSSVGElementInstanceCustom.cpp:
    (WebCore::JSSVGElementInstance::visitChildrenVirtual):
    (WebCore::JSSVGElementInstance::visitChildren):
    * bindings/js/JSSharedWorkerCustom.cpp:
    (WebCore::JSSharedWorker::visitChildrenVirtual):
    (WebCore::JSSharedWorker::visitChildren):
    * bindings/js/JSStyleSheetCustom.cpp:
    (WebCore::JSStyleSheet::visitChildrenVirtual):
    (WebCore::JSStyleSheet::visitChildren):
    * bindings/js/JSTreeWalkerCustom.cpp:
    (WebCore::JSTreeWalker::visitChildrenVirtual):
    (WebCore::JSTreeWalker::visitChildren):
    * bindings/js/JSWebGLRenderingContextCustom.cpp:
    (WebCore::JSWebGLRenderingContext::visitChildrenVirtual):
    (WebCore::JSWebGLRenderingContext::visitChildren):
    * bindings/js/JSWorkerContextCustom.cpp:
    (WebCore::JSWorkerContext::visitChildrenVirtual):
    (WebCore::JSWorkerContext::visitChildren):
    * bindings/js/JSXMLHttpRequestCustom.cpp:
    (WebCore::JSXMLHttpRequest::visitChildrenVirtual):
    (WebCore::JSXMLHttpRequest::visitChildren):
    * bindings/js/JSXPathResultCustom.cpp:
    (WebCore::JSXPathResult::visitChildrenVirtual):
    (WebCore::JSXPathResult::visitChildren):
    * bindings/scripts/CodeGeneratorJS.pm:
    (GenerateHeader):
    (GenerateImplementation):
    * bindings/scripts/test/JS/JSTestObj.cpp:
    (WebCore::JSTestObj::visitChildrenVirtual):
    (WebCore::JSTestObj::visitChildren):
    * bindings/scripts/test/JS/JSTestObj.h:
    * bridge/qt/qt_instance.cpp:
    (JSC::Bindings::QtRuntimeObject::visitChildrenVirtual):
    (JSC::Bindings::QtRuntimeObject::visitChildren):
    * bridge/qt/qt_runtime.cpp:
    (JSC::Bindings::QtRuntimeMetaMethod::visitChildrenVirtual):
    (JSC::Bindings::QtRuntimeMetaMethod::visitChildren):
    * bridge/qt/qt_runtime.h:
    * workers/WorkerContext.h:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@95849 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    982c9ea2