Ignore:
Timestamp:
Sep 11, 2011, 2:11:11 PM (14 years ago)
Author:
[email protected]
Message:

Remove support for anonymous storage from jsobjects
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):

(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):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h

    r94875 r94929  
    168168            Base::finishCreation(globalData);
    169169            structure()->setGlobalObject(globalData, this);
    170             COMPILE_ASSERT(JSGlobalObject::AnonymousSlotCount == 1, JSGlobalObject_has_only_a_single_slot);
    171170            putThisToAnonymousValue(0);
    172171            init(thisValue);
     
    275274        static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
    276275        {
    277             return Structure::create(globalData, 0, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     276            return Structure::create(globalData, 0, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    278277        }
    279278
     
    295294    protected:
    296295
    297         static const unsigned AnonymousSlotCount = JSVariableObject::AnonymousSlotCount + 1;
    298296        static const unsigned StructureFlags = OverridesGetOwnPropertySlot | OverridesVisitChildren | OverridesGetPropertyNames | JSVariableObject::StructureFlags;
    299297
Note: See TracChangeset for help on using the changeset viewer.