Skip to content
  • oliver@apple.com's avatar
    Remove support for anonymous storage from jsobjects · 8c798d2c
    oliver@apple.com authored
    https://bugs.webkit.org/show_bug.cgi?id=67881
    
    Reviewed by Sam Weinig.
    
    Source/JavaScriptCore:
    
    Remove all use of anonymous slots, essentially a mechanical change
    in JavaScriptCore
    
    * API/JSCallbackConstructor.h:
    (JSC::JSCallbackConstructor::createStructure):
    * API/JSCallbackFunction.h:
    (JSC::JSCallbackFunction::createStructure):
    * API/JSCallbackObject.h:
    (JSC::JSCallbackObject::createStructure):
    * JavaScriptCore.exp:
    * debugger/DebuggerActivation.h:
    (JSC::DebuggerActivation::createStructure):
    * heap/MarkStack.cpp:
    (JSC::MarkStack::validateValue):
    * heap/MarkStack.h:
    * runtime/Arguments.h:
    (JSC::Arguments::createStructure):
    * runtime/ArrayConstructor.h:
    (JSC::ArrayConstructor::createStructure):
    * runtime/ArrayPrototype.cpp:
    (JSC::ArrayPrototype::finishCreation):
    * runtime/ArrayPrototype.h:
    (JSC::ArrayPrototype::createStructure):
    * runtime/BooleanObject.h:
    (JSC::BooleanObject::createStructure):
    * runtime/BooleanPrototype.cpp:
    (JSC::BooleanPrototype::BooleanPrototype):
    * runtime/BooleanPrototype.h:
    (JSC::BooleanPrototype::createStructure):
    * runtime/DateConstructor.h:
    (JSC::DateConstructor::createStructure):
    * runtime/DateInstance.h:
    (JSC::DateInstance::createStructure):
    * runtime/DatePrototype.cpp:
    (JSC::DatePrototype::DatePrototype):
    * runtime/DatePrototype.h:
    (JSC::DatePrototype::createStructure):
    * runtime/ErrorInstance.h:
    (JSC::ErrorInstance::createStructure):
    * runtime/ErrorPrototype.cpp:
    (JSC::ErrorPrototype::finishCreation):
    * runtime/ErrorPrototype.h:
    (JSC::ErrorPrototype::createStructure):
    * runtime/ExceptionHelpers.h:
    (JSC::InterruptedExecutionError::createStructure):
    (JSC::TerminatedExecutionError::createStructure):
    * runtime/Executable.h:
    (JSC::ExecutableBase::createStructure):
    (JSC::NativeExecutable::createStructure):
    (JSC::EvalExecutable::createStructure):
    (JSC::ProgramExecutable::createStructure):
    (JSC::FunctionExecutable::createStructure):
    * runtime/FunctionPrototype.h:
    (JSC::FunctionPrototype::createStructure):
    * runtime/GetterSetter.h:
    (JSC::GetterSetter::createStructure):
    * runtime/InternalFunction.h:
    (JSC::InternalFunction::createStructure):
    * runtime/JSAPIValueWrapper.h:
    (JSC::JSAPIValueWrapper::createStructure):
    * runtime/JSActivation.h:
    (JSC::JSActivation::createStructure):
    * runtime/JSArray.h:
    (JSC::JSArray::createStructure):
    * runtime/JSByteArray.cpp:
    (JSC::JSByteArray::createStructure):
    * runtime/JSCell.h:
    * runtime/JSFunction.h:
    (JSC::JSFunction::createStructure):
    * runtime/JSGlobalObject.h:
    (JSC::JSGlobalObject::finishCreation):
    (JSC::JSGlobalObject::createStructure):
    * runtime/JSNotAnObject.h:
    (JSC::JSNotAnObject::createStructure):
    * runtime/JSONObject.h:
    (JSC::JSONObject::createStructure):
    * runtime/JSObject.h:
    (JSC::JSObject::createStructure):
    (JSC::JSNonFinalObject::createStructure):
    (JSC::JSFinalObject::createStructure):
    * runtime/JSPropertyNameIterator.cpp:
    (JSC::JSPropertyNameIterator::create):
    * runtime/JSPropertyNameIterator.h:
    (JSC::JSPropertyNameIterator::createStructure):
    * runtime/JSStaticScopeObject.h:
    (JSC::JSStaticScopeObject::createStructure):
    * runtime/JSString.h:
    (JSC::RopeBuilder::createStructure):
    * runtime/JSVariableObject.h:
    (JSC::JSVariableObject::createStructure):
    * runtime/JSWrapperObject.h:
    (JSC::JSWrapperObject::createStructure):
    * runtime/MathObject.h:
    (JSC::MathObject::createStructure):
    * runtime/NativeErrorConstructor.h:
    (JSC::NativeErrorConstructor::createStructure):
    * runtime/NumberConstructor.h:
    (JSC::NumberConstructor::createStructure):
    * runtime/NumberObject.h:
    (JSC::NumberObject::createStructure):
    * runtime/NumberPrototype.cpp:
    (JSC::NumberPrototype::NumberPrototype):
    * runtime/NumberPrototype.h:
    (JSC::NumberPrototype::createStructure):
    * runtime/ObjectConstructor.h:
    (JSC::ObjectConstructor::createStructure):
    * runtime/ObjectPrototype.cpp:
    (JSC::ObjectPrototype::finishCreation):
    * runtime/ObjectPrototype.h:
    (JSC::ObjectPrototype::createStructure):
    * runtime/RegExp.h:
    (JSC::RegExp::createStructure):
    * runtime/RegExpConstructor.h:
    (JSC::RegExpConstructor::createStructure):
    * runtime/RegExpObject.h:
    (JSC::RegExpObject::createStructure):
    * runtime/RegExpPrototype.h:
    (JSC::RegExpPrototype::createStructure):
    * runtime/ScopeChain.h:
    (JSC::ScopeChainNode::createStructure):
    * runtime/StrictEvalActivation.h:
    (JSC::StrictEvalActivation::createStructure):
    * runtime/StringConstructor.h:
    (JSC::StringConstructor::createStructure):
    * runtime/StringObject.h:
    (JSC::StringObject::createStructure):
    * runtime/StringObjectThatMasqueradesAsUndefined.h:
    (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
    * runtime/StringPrototype.cpp:
    (JSC::StringPrototype::StringPrototype):
    * runtime/StringPrototype.h:
    (JSC::StringPrototype::createStructure):
    * runtime/Structure.cpp:
    (JSC::Structure::Structure):
    (JSC::Structure::materializePropertyMap):
    (JSC::Structure::addPropertyTransitionToExistingStructure):
    (JSC::Structure::addPropertyTransition):
    (JSC::Structure::removePropertyTransition):
    (JSC::Structure::changePrototypeTransition):
    (JSC::Structure::despecifyFunctionTransition):
    (JSC::Structure::getterSetterTransition):
    (JSC::Structure::toDictionaryTransition):
    (JSC::Structure::preventExtensionsTransition):
    (JSC::Structure::flattenDictionaryStructure):
    (JSC::Structure::addPropertyWithoutTransition):
    (JSC::Structure::removePropertyWithoutTransition):
    (JSC::Structure::get):
    (JSC::Structure::putSpecificValue):
    (JSC::Structure::remove):
    (JSC::Structure::checkConsistency):
    * runtime/Structure.h:
    (JSC::Structure::create):
    (JSC::Structure::propertyStorageSize):
    (JSC::Structure::get):
    * runtime/StructureChain.h:
    (JSC::StructureChain::createStructure):
    
    Source/JavaScriptGlue:
    
    Don't need an anonymous slot count anymore
    
    * UserObjectImp.h:
    (UserObjectImp::createStructure):
    
    Source/WebCore:
    
    Remove all use of anonymous slots, this required modifying
    bindings generation to add member variables for cached attributes,
    and override visitChildren with the necessary logic to mark those
    new members.
    
    I added bindings generation tests for these values.
    
    * bindings/js/JSAudioConstructor.h:
    (WebCore::JSAudioConstructor::createStructure):
    * bindings/js/JSDOMBinding.h:
    (WebCore::DOMConstructorObject::createStructure):
    * bindings/js/JSDOMGlobalObject.h:
    (WebCore::JSDOMGlobalObject::createStructure):
    * bindings/js/JSDOMWindowBase.h:
    (WebCore::JSDOMWindowBase::createStructure):
    * bindings/js/JSDOMWindowShell.h:
    (WebCore::JSDOMWindowShell::createStructure):
    * bindings/js/JSDOMWrapper.h:
    (WebCore::JSDOMWrapper::createStructure):
    * bindings/js/JSImageConstructor.h:
    (WebCore::JSImageConstructor::createStructure):
    * bindings/js/JSMessageEventCustom.cpp:
    (WebCore::JSMessageEvent::data):
    (WebCore::JSMessageEvent::initMessageEvent):
    * bindings/js/JSOptionConstructor.h:
    (WebCore::JSOptionConstructor::createStructure):
    * bindings/js/JSWorkerContextBase.h:
    (WebCore::JSWorkerContextBase::createStructure):
    * bindings/scripts/CodeGeneratorJS.pm:
    (GenerateHeader):
    (GenerateImplementation):
    (GenerateConstructorDeclaration):
    * bindings/scripts/test/JS/JSTestInterface.cpp:
    (WebCore::JSTestInterfaceConstructor::createStructure):
    * bindings/scripts/test/JS/JSTestInterface.h:
    (WebCore::JSTestInterface::createStructure):
    (WebCore::JSTestInterfacePrototype::createStructure):
    * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
    (WebCore::JSTestMediaQueryListListenerConstructor::createStructure):
    * bindings/scripts/test/JS/JSTestMediaQueryListListener.h:
    (WebCore::JSTestMediaQueryListListener::createStructure):
    (WebCore::JSTestMediaQueryListListenerPrototype::createStructure):
    * bindings/scripts/test/JS/JSTestObj.cpp:
    (WebCore::JSTestObjConstructor::createStructure):
    (WebCore::jsTestObjCachedAttribute1):
    (WebCore::jsTestObjCachedAttribute2):
    (WebCore::JSTestObj::visitChildren):
    * bindings/scripts/test/JS/JSTestObj.h:
    (WebCore::JSTestObj::createStructure):
    (WebCore::JSTestObjPrototype::createStructure):
    * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
    (WebCore::JSTestSerializedScriptValueInterfaceConstructor::createStructure):
    * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
    (WebCore::JSTestSerializedScriptValueInterface::createStructure):
    (WebCore::JSTestSerializedScriptValueInterfacePrototype::createStructure):
    * bindings/scripts/test/TestObj.idl:
    * bindings/scripts/test/V8/V8TestObj.cpp:
    (WebCore::TestObjInternal::cachedAttribute1AttrGetter):
    (WebCore::TestObjInternal::cachedAttribute2AttrGetter):
    * bridge/c/CRuntimeObject.h:
    (JSC::Bindings::CRuntimeObject::createStructure):
    * bridge/c/c_instance.cpp:
    (JSC::Bindings::CRuntimeMethod::createStructure):
    * bridge/jni/jsc/JavaInstanceJSC.cpp:
    (JavaRuntimeMethod::createStructure):
    * bridge/jni/jsc/JavaRuntimeObject.h:
    (JSC::Bindings::JavaRuntimeObject::createStructure):
    * bridge/objc/ObjCRuntimeObject.h:
    (JSC::Bindings::ObjCRuntimeObject::createStructure):
    * bridge/objc/objc_instance.mm:
    (ObjCRuntimeMethod::createStructure):
    * bridge/objc/objc_runtime.h:
    (JSC::Bindings::ObjcFallbackObjectImp::createStructure):
    * bridge/runtime_array.h:
    (JSC::RuntimeArray::createStructure):
    * bridge/runtime_method.h:
    (JSC::RuntimeMethod::createStructure):
    * bridge/runtime_object.h:
    (JSC::Bindings::RuntimeObject::createStructure):
    
    Source/WebKit/mac:
    
    Remove the use of AnonymousSlotCount
    
    * Plugins/Hosted/ProxyInstance.mm:
    (WebKit::ProxyRuntimeMethod::createStructure):
    * Plugins/Hosted/ProxyRuntimeObject.h:
    (WebKit::ProxyRuntimeObject::createStructure):
    
    Source/WebKit2:
    
    Remove the use of AnonymousSlotCount.
    
    * WebProcess/Plugins/Netscape/JSNPMethod.h:
    (WebKit::JSNPMethod::createStructure):
    * WebProcess/Plugins/Netscape/JSNPObject.h:
    (WebKit::JSNPObject::createStructure):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@94929 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    8c798d2c