Changeset 94929 in webkit


Ignore:
Timestamp:
Sep 11, 2011 2:11:11 PM (13 years ago)
Author:
oliver@apple.com
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):

Location:
trunk/Source
Files:
110 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/API/JSCallbackConstructor.h

    r94875 r94929  
    5050    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    5151    {
    52         return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     52        return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info);
    5353    }
    5454
  • trunk/Source/JavaScriptCore/API/JSCallbackFunction.h

    r94875 r94929  
    5151    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    5252    {
    53         return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     53        return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info);
    5454    }
    5555
  • trunk/Source/JavaScriptCore/API/JSCallbackObject.h

    r94875 r94929  
    153153    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    154154    {
    155         return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), Parent::AnonymousSlotCount, &s_info);
     155        return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info);
    156156    }
    157157   
  • trunk/Source/JavaScriptCore/ChangeLog

    r94927 r94929  
     12011-09-09  Oliver Hunt  <oliver@apple.com>
     2
     3        Remove support for anonymous storage from jsobjects
     4        https://bugs.webkit.org/show_bug.cgi?id=67881
     5
     6        Reviewed by Sam Weinig.
     7
     8        Remove all use of anonymous slots, essentially a mechanical change
     9        in JavaScriptCore
     10
     11        * API/JSCallbackConstructor.h:
     12        (JSC::JSCallbackConstructor::createStructure):
     13        * API/JSCallbackFunction.h:
     14        (JSC::JSCallbackFunction::createStructure):
     15        * API/JSCallbackObject.h:
     16        (JSC::JSCallbackObject::createStructure):
     17        * JavaScriptCore.exp:
     18        * debugger/DebuggerActivation.h:
     19        (JSC::DebuggerActivation::createStructure):
     20        * heap/MarkStack.cpp:
     21        (JSC::MarkStack::validateValue):
     22        * heap/MarkStack.h:
     23        * runtime/Arguments.h:
     24        (JSC::Arguments::createStructure):
     25        * runtime/ArrayConstructor.h:
     26        (JSC::ArrayConstructor::createStructure):
     27        * runtime/ArrayPrototype.cpp:
     28        (JSC::ArrayPrototype::finishCreation):
     29        * runtime/ArrayPrototype.h:
     30        (JSC::ArrayPrototype::createStructure):
     31        * runtime/BooleanObject.h:
     32        (JSC::BooleanObject::createStructure):
     33        * runtime/BooleanPrototype.cpp:
     34        (JSC::BooleanPrototype::BooleanPrototype):
     35        * runtime/BooleanPrototype.h:
     36        (JSC::BooleanPrototype::createStructure):
     37        * runtime/DateConstructor.h:
     38        (JSC::DateConstructor::createStructure):
     39        * runtime/DateInstance.h:
     40        (JSC::DateInstance::createStructure):
     41        * runtime/DatePrototype.cpp:
     42        (JSC::DatePrototype::DatePrototype):
     43        * runtime/DatePrototype.h:
     44        (JSC::DatePrototype::createStructure):
     45        * runtime/ErrorInstance.h:
     46        (JSC::ErrorInstance::createStructure):
     47        * runtime/ErrorPrototype.cpp:
     48        (JSC::ErrorPrototype::finishCreation):
     49        * runtime/ErrorPrototype.h:
     50        (JSC::ErrorPrototype::createStructure):
     51        * runtime/ExceptionHelpers.h:
     52        (JSC::InterruptedExecutionError::createStructure):
     53        (JSC::TerminatedExecutionError::createStructure):
     54        * runtime/Executable.h:
     55        (JSC::ExecutableBase::createStructure):
     56        (JSC::NativeExecutable::createStructure):
     57        (JSC::EvalExecutable::createStructure):
     58        (JSC::ProgramExecutable::createStructure):
     59        (JSC::FunctionExecutable::createStructure):
     60        * runtime/FunctionPrototype.h:
     61        (JSC::FunctionPrototype::createStructure):
     62        * runtime/GetterSetter.h:
     63        (JSC::GetterSetter::createStructure):
     64        * runtime/InternalFunction.h:
     65        (JSC::InternalFunction::createStructure):
     66        * runtime/JSAPIValueWrapper.h:
     67        (JSC::JSAPIValueWrapper::createStructure):
     68        * runtime/JSActivation.h:
     69        (JSC::JSActivation::createStructure):
     70        * runtime/JSArray.h:
     71        (JSC::JSArray::createStructure):
     72        * runtime/JSByteArray.cpp:
     73        (JSC::JSByteArray::createStructure):
     74        * runtime/JSCell.h:
     75        * runtime/JSFunction.h:
     76        (JSC::JSFunction::createStructure):
     77        * runtime/JSGlobalObject.h:
     78        (JSC::JSGlobalObject::finishCreation):
     79        (JSC::JSGlobalObject::createStructure):
     80        * runtime/JSNotAnObject.h:
     81        (JSC::JSNotAnObject::createStructure):
     82        * runtime/JSONObject.h:
     83        (JSC::JSONObject::createStructure):
     84        * runtime/JSObject.h:
     85        (JSC::JSObject::createStructure):
     86        (JSC::JSNonFinalObject::createStructure):
     87        (JSC::JSFinalObject::createStructure):
     88        * runtime/JSPropertyNameIterator.cpp:
     89        (JSC::JSPropertyNameIterator::create):
     90        * runtime/JSPropertyNameIterator.h:
     91        (JSC::JSPropertyNameIterator::createStructure):
     92        * runtime/JSStaticScopeObject.h:
     93        (JSC::JSStaticScopeObject::createStructure):
     94        * runtime/JSString.h:
     95        (JSC::RopeBuilder::createStructure):
     96        * runtime/JSVariableObject.h:
     97        (JSC::JSVariableObject::createStructure):
     98        * runtime/JSWrapperObject.h:
     99        (JSC::JSWrapperObject::createStructure):
     100        * runtime/MathObject.h:
     101        (JSC::MathObject::createStructure):
     102        * runtime/NativeErrorConstructor.h:
     103        (JSC::NativeErrorConstructor::createStructure):
     104        * runtime/NumberConstructor.h:
     105        (JSC::NumberConstructor::createStructure):
     106        * runtime/NumberObject.h:
     107        (JSC::NumberObject::createStructure):
     108        * runtime/NumberPrototype.cpp:
     109        (JSC::NumberPrototype::NumberPrototype):
     110        * runtime/NumberPrototype.h:
     111        (JSC::NumberPrototype::createStructure):
     112        * runtime/ObjectConstructor.h:
     113        (JSC::ObjectConstructor::createStructure):
     114        * runtime/ObjectPrototype.cpp:
     115        (JSC::ObjectPrototype::finishCreation):
     116        * runtime/ObjectPrototype.h:
     117        (JSC::ObjectPrototype::createStructure):
     118        * runtime/RegExp.h:
     119        (JSC::RegExp::createStructure):
     120        * runtime/RegExpConstructor.h:
     121        (JSC::RegExpConstructor::createStructure):
     122        * runtime/RegExpObject.h:
     123        (JSC::RegExpObject::createStructure):
     124        * runtime/RegExpPrototype.h:
     125        (JSC::RegExpPrototype::createStructure):
     126        * runtime/ScopeChain.h:
     127        (JSC::ScopeChainNode::createStructure):
     128        * runtime/StrictEvalActivation.h:
     129        (JSC::StrictEvalActivation::createStructure):
     130        * runtime/StringConstructor.h:
     131        (JSC::StringConstructor::createStructure):
     132        * runtime/StringObject.h:
     133        (JSC::StringObject::createStructure):
     134        * runtime/StringObjectThatMasqueradesAsUndefined.h:
     135        (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
     136        * runtime/StringPrototype.cpp:
     137        (JSC::StringPrototype::StringPrototype):
     138        * runtime/StringPrototype.h:
     139        (JSC::StringPrototype::createStructure):
     140        * runtime/Structure.cpp:
     141        (JSC::Structure::Structure):
     142        (JSC::Structure::materializePropertyMap):
     143        (JSC::Structure::addPropertyTransitionToExistingStructure):
     144        (JSC::Structure::addPropertyTransition):
     145        (JSC::Structure::removePropertyTransition):
     146        (JSC::Structure::changePrototypeTransition):
     147        (JSC::Structure::despecifyFunctionTransition):
     148        (JSC::Structure::getterSetterTransition):
     149        (JSC::Structure::toDictionaryTransition):
     150        (JSC::Structure::preventExtensionsTransition):
     151        (JSC::Structure::flattenDictionaryStructure):
     152        (JSC::Structure::addPropertyWithoutTransition):
     153        (JSC::Structure::removePropertyWithoutTransition):
     154        (JSC::Structure::get):
     155        (JSC::Structure::putSpecificValue):
     156        (JSC::Structure::remove):
     157        (JSC::Structure::checkConsistency):
     158        * runtime/Structure.h:
     159        (JSC::Structure::create):
     160        (JSC::Structure::propertyStorageSize):
     161        (JSC::Structure::get):
     162        * runtime/StructureChain.h:
     163        (JSC::StructureChain::createStructure):
     164
    11652011-09-11  Jarred Nicholls  <jarred@sencha.com>
    2166
  • trunk/Source/JavaScriptCore/JavaScriptCore.exp

    r94920 r94929  
    339339__ZN3JSC9CodeBlockD1Ev
    340340__ZN3JSC9CodeBlockD2Ev
     341__ZN3JSC9MarkStack13validateValueENS_7JSValueE
    341342__ZN3JSC9Structure21addPropertyTransitionERNS_12JSGlobalDataEPS0_RKNS_10IdentifierEjPNS_6JSCellERm
    342343__ZN3JSC9Structure22materializePropertyMapERNS_12JSGlobalDataE
     
    348349__ZN3JSC9Structure40addPropertyTransitionToExistingStructureEPS0_RKNS_10IdentifierEjPNS_6JSCellERm
    349350__ZN3JSC9Structure6s_infoE
    350 __ZN3JSC9StructureC1ERNS_12JSGlobalDataEPNS_14JSGlobalObjectENS_7JSValueERKNS_8TypeInfoEjPKNS_9ClassInfoE
     351__ZN3JSC9StructureC1ERNS_12JSGlobalDataEPNS_14JSGlobalObjectENS_7JSValueERKNS_8TypeInfoEPKNS_9ClassInfoE
    351352__ZN3JSC9StructureD1Ev
    352353__ZN3JSC9constructEPNS_9ExecStateENS_7JSValueENS_13ConstructTypeERKNS_13ConstructDataERKNS_7ArgListE
  • trunk/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def

    r94918 r94929  
    1919    ??0SHA1@WTF@@QAE@XZ
    2020    ??0StringObject@JSC@@IAE@AAVJSGlobalData@1@PAVStructure@1@@Z
    21     ??0Structure@JSC@@AAE@AAVJSGlobalData@1@PAVJSGlobalObject@1@VJSValue@1@ABVTypeInfo@1@IPBUClassInfo@1@@Z
     21    ??0Structure@JSC@@AAE@AAVJSGlobalData@1@PAVJSGlobalObject@1@VJSValue@1@ABVTypeInfo@1@PBUClassInfo@1@@Z
    2222    ??0ThreadCondition@WTF@@QAE@XZ
    2323    ??0UString@JSC@@QAE@PBD@Z
     
    384384    ?unwrappedObject@JSObject@JSC@@UAEPAV12@XZ
    385385    ?utf8@UString@JSC@@QBE?AVCString@WTF@@_N@Z
     386    ?validateValue@MarkStack@JSC@@KAXVJSValue@2@@Z
    386387    ?visitChildren@JSGlobalObject@JSC@@UAEXAAVSlotVisitor@2@@Z
    387388    ?visitChildren@JSObject@JSC@@UAEXAAVSlotVisitor@2@@Z
  • trunk/Source/JavaScriptCore/debugger/DebuggerActivation.h

    r94875 r94929  
    5757        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    5858        {
    59             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     59            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    6060        }
    6161
  • trunk/Source/JavaScriptCore/heap/MarkStack.cpp

    r94477 r94929  
    175175        CRASH();
    176176}
     177#else
     178void MarkStack::validateValue(JSValue)
     179{
     180}
    177181#endif
    178182
  • trunk/Source/JavaScriptCore/heap/MarkStack.h

    r94477 r94929  
    119119#if ENABLE(GC_VALIDATION)
    120120        static void validateSet(JSValue*, size_t);
     121#endif
    121122        static void validateValue(JSValue);
    122 #endif
    123123
    124124        void append(JSValue*);
  • trunk/Source/JavaScriptCore/runtime/Arguments.h

    r94599 r94929  
    114114        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    115115        {
    116             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     116            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    117117        }
    118118
  • trunk/Source/JavaScriptCore/runtime/ArrayConstructor.h

    r94875 r94929  
    4141        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4242        {
    43             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     43            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    4444        }
    4545
  • trunk/Source/JavaScriptCore/runtime/ArrayPrototype.cpp

    r94875 r94929  
    124124    Base::finishCreation(globalObject->globalData());
    125125    ASSERT(inherits(&s_info));
    126     putAnonymousValue(globalObject->globalData(), 0, globalObject);
    127126}
    128127
  • trunk/Source/JavaScriptCore/runtime/ArrayPrototype.h

    r94875 r94929  
    4848        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4949        {
    50             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     50            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    5151        }
    5252
    5353    protected:
    5454        void finishCreation(JSGlobalObject*);
    55 
    56         static const unsigned AnonymousSlotCount = JSArray::AnonymousSlotCount + 1;
    5755    };
    5856
  • trunk/Source/JavaScriptCore/runtime/BooleanObject.h

    r94875 r94929  
    4545        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4646        {
    47             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     47            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    4848        }
    4949    };
  • trunk/Source/JavaScriptCore/runtime/BooleanPrototype.cpp

    r94875 r94929  
    5656}
    5757
    58 void BooleanPrototype::finishCreation(ExecState* exec, JSGlobalObject* globalObject)
     58void BooleanPrototype::finishCreation(ExecState* exec, JSGlobalObject*)
    5959{
    6060    Base::finishCreation(exec->globalData());
     
    6262
    6363    ASSERT(inherits(&s_info));
    64     putAnonymousValue(globalObject->globalData(), 0, globalObject);
    6564}
    6665
  • trunk/Source/JavaScriptCore/runtime/BooleanPrototype.h

    r94875 r94929  
    3939        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4040        {
    41             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     41            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    4242        }
    4343
     
    4545        void finishCreation(ExecState*, JSGlobalObject*);
    4646        static const unsigned StructureFlags = OverridesGetOwnPropertySlot | BooleanObject::StructureFlags;
    47         static const unsigned AnonymousSlotCount = BooleanObject::AnonymousSlotCount + 1;
    4847
    4948    private:
  • trunk/Source/JavaScriptCore/runtime/DateConstructor.h

    r94875 r94929  
    4141        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4242        {
    43             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     43            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    4444        }
    4545
  • trunk/Source/JavaScriptCore/runtime/DateInstance.h

    r94875 r94929  
    7373        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    7474        {
    75             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     75            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    7676        }
    7777
  • trunk/Source/JavaScriptCore/runtime/DatePrototype.cpp

    r94875 r94929  
    437437}
    438438
    439 void DatePrototype::finishCreation(ExecState* exec, JSGlobalObject* globalObject)
     439void DatePrototype::finishCreation(ExecState* exec, JSGlobalObject*)
    440440{
    441441    Base::finishCreation(exec->globalData());
     
    443443
    444444    // The constructor will be added later, after DateConstructor has been built.
    445     putAnonymousValue(exec->globalData(), 0, globalObject);
    446445}
    447446
  • trunk/Source/JavaScriptCore/runtime/DatePrototype.h

    r94875 r94929  
    4646        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4747        {
    48             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     48            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    4949        }
    5050
     
    5252        void finishCreation(ExecState*, JSGlobalObject*);
    5353        static const unsigned StructureFlags = OverridesGetOwnPropertySlot | DateInstance::StructureFlags;
    54 
    55         COMPILE_ASSERT(!DateInstance::AnonymousSlotCount, DatePrototype_stomps_on_your_anonymous_slot);
    56         static const unsigned AnonymousSlotCount = 1;
    5754    };
    5855
  • trunk/Source/JavaScriptCore/runtime/ErrorInstance.h

    r94599 r94929  
    3434        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    3535        {
    36             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     36            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    3737        }
    3838
  • trunk/Source/JavaScriptCore/runtime/ErrorPrototype.cpp

    r94875 r94929  
    5656}
    5757
    58 void ErrorPrototype::finishCreation(ExecState* exec, JSGlobalObject* globalObject)
     58void ErrorPrototype::finishCreation(ExecState* exec, JSGlobalObject*)
    5959{
    6060    Base::finishCreation(exec->globalData(), "");
    6161    ASSERT(inherits(&s_info));
    6262    putDirect(exec->globalData(), exec->propertyNames().name, jsNontrivialString(exec, "Error"), DontEnum);
    63     putAnonymousValue(globalObject->globalData(), 0, globalObject);
    6463}
    6564
  • trunk/Source/JavaScriptCore/runtime/ErrorPrototype.h

    r94875 r94929  
    4343        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4444        {
    45             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     45            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    4646        }
    4747
     
    5151
    5252        static const unsigned StructureFlags = OverridesGetOwnPropertySlot | ErrorInstance::StructureFlags;
    53         static const unsigned AnonymousSlotCount = ErrorInstance::AnonymousSlotCount + 1;
    5453
    5554    private:
  • trunk/Source/JavaScriptCore/runtime/ExceptionHelpers.h

    r94918 r94929  
    7777    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    7878    {
    79         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     79        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    8080    }
    8181
     
    104104    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    105105    {
    106         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     106        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    107107    }
    108108
  • trunk/Source/JavaScriptCore/runtime/Executable.h

    r94920 r94929  
    8484        }
    8585
    86         static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(CompoundType, StructureFlags), AnonymousSlotCount, &s_info); }
     86        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(CompoundType, StructureFlags), &s_info); }
    8787       
    8888        static const ClassInfo s_info;
     
    199199        NativeFunction function() { return m_function; }
    200200
    201         static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(LeafType, StructureFlags), AnonymousSlotCount, &s_info); }
     201        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(LeafType, StructureFlags), &s_info); }
    202202       
    203203        static const ClassInfo s_info;
     
    335335        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    336336        {
    337             return Structure::create(globalData, globalObject, proto, TypeInfo(CompoundType, StructureFlags), AnonymousSlotCount, &s_info);
     337            return Structure::create(globalData, globalObject, proto, TypeInfo(CompoundType, StructureFlags), &s_info);
    338338        }
    339339       
     
    396396        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    397397        {
    398             return Structure::create(globalData, globalObject, proto, TypeInfo(CompoundType, StructureFlags), AnonymousSlotCount, &s_info);
     398            return Structure::create(globalData, globalObject, proto, TypeInfo(CompoundType, StructureFlags), &s_info);
    399399        }
    400400       
     
    552552        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    553553        {
    554             return Structure::create(globalData, globalObject, proto, TypeInfo(CompoundType, StructureFlags), AnonymousSlotCount, &s_info);
     554            return Structure::create(globalData, globalObject, proto, TypeInfo(CompoundType, StructureFlags), &s_info);
    555555        }
    556556       
  • trunk/Source/JavaScriptCore/runtime/FunctionPrototype.h

    r94875 r94929  
    3939        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    4040        {
    41             return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     41            return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info);
    4242        }
    4343
  • trunk/Source/JavaScriptCore/runtime/GetterSetter.h

    r94599 r94929  
    6262        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    6363        {
    64             return Structure::create(globalData, globalObject, prototype, TypeInfo(GetterSetterType, OverridesVisitChildren), AnonymousSlotCount, &s_info);
     64            return Structure::create(globalData, globalObject, prototype, TypeInfo(GetterSetterType, OverridesVisitChildren), &s_info);
    6565        }
    6666       
  • trunk/Source/JavaScriptCore/runtime/InternalFunction.h

    r94875 r94929  
    4444        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    4545        {
    46             return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     46            return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info);
    4747        }
    4848
  • trunk/Source/JavaScriptCore/runtime/JSAPIValueWrapper.h

    r94599 r94929  
    4242        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4343        {
    44             return Structure::create(globalData, globalObject, prototype, TypeInfo(CompoundType, OverridesVisitChildren | OverridesGetPropertyNames), AnonymousSlotCount, &s_info);
     44            return Structure::create(globalData, globalObject, prototype, TypeInfo(CompoundType, OverridesVisitChildren | OverridesGetPropertyNames), &s_info);
    4545        }
    4646       
  • trunk/Source/JavaScriptCore/runtime/JSActivation.h

    r94875 r94929  
    7777        static const ClassInfo s_info;
    7878
    79         static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info); }
     79        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info); }
    8080
    8181    protected:
  • trunk/Source/JavaScriptCore/runtime/JSArray.h

    r94599 r94929  
    152152        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    153153        {
    154             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     154            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    155155        }
    156156       
  • trunk/Source/JavaScriptCore/runtime/JSByteArray.cpp

    r94599 r94929  
    5252Structure* JSByteArray::createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype, const JSC::ClassInfo* classInfo)
    5353{
    54     return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, classInfo);
     54    return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), classInfo);
    5555}
    5656
  • trunk/Source/JavaScriptCore/runtime/JSCell.h

    r94774 r94929  
    146146       
    147147    protected:
    148         static const unsigned AnonymousSlotCount = 0;
    149148
    150149        void finishCreation(JSGlobalData&);
  • trunk/Source/JavaScriptCore/runtime/JSFunction.h

    r94701 r94929  
    120120        {
    121121            ASSERT(globalObject);
    122             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     122            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    123123        }
    124124
  • 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
  • trunk/Source/JavaScriptCore/runtime/JSNotAnObject.h

    r94599 r94929  
    5656        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    5757        {
    58             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     58            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    5959        }
    6060
  • trunk/Source/JavaScriptCore/runtime/JSONObject.h

    r94875 r94929  
    4646        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4747        {
    48             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     48            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    4949        }
    5050       
  • trunk/Source/JavaScriptCore/runtime/JSObject.h

    r94814 r94929  
    232232        }
    233233
    234         void putAnonymousValue(JSGlobalData& globalData, unsigned index, JSValue value)
    235         {
    236             ASSERT(index < m_structure->anonymousSlotCount());
    237             locationForOffset(index)->set(globalData, this, value);
    238         }
    239         void clearAnonymousValue(unsigned index)
    240         {
    241             ASSERT(index < m_structure->anonymousSlotCount());
    242             locationForOffset(index)->clear();
    243         }
    244         JSValue getAnonymousValue(unsigned index) const
    245         {
    246             ASSERT(index < m_structure->anonymousSlotCount());
    247             return locationForOffset(index)->get();
    248         }
    249 
    250234        JSGlobalObject* globalObject() const
    251235        {
     
    275259        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    276260        {
    277             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     261            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    278262        }
    279263
     
    352336        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    353337        {
    354             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     338            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    355339        }
    356340
     
    399383        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    400384        {
    401             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     385            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    402386        }
    403387
  • trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp

    r93920 r94929  
    5555    o->getPropertyNames(exec, propertyNames);
    5656    size_t numCacheableSlots = 0;
    57     if (!o->structure()->hasNonEnumerableProperties() && !o->structure()->hasAnonymousSlots() &&
    58         !o->structure()->hasGetterSetterProperties() && !o->structure()->isUncacheableDictionary() &&
    59         !o->structure()->typeInfo().overridesGetPropertyNames())
     57    if (!o->structure()->hasNonEnumerableProperties() && !o->structure()->hasGetterSetterProperties()
     58        && !o->structure()->isUncacheableDictionary() && !o->structure()->typeInfo().overridesGetPropertyNames())
    6059        numCacheableSlots = o->structure()->propertyStorageSize();
    6160   
  • trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h

    r94599 r94929  
    5656        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    5757        {
    58             return Structure::create(globalData, globalObject, prototype, TypeInfo(CompoundType, OverridesVisitChildren), AnonymousSlotCount, &s_info);
     58            return Structure::create(globalData, globalObject, prototype, TypeInfo(CompoundType, OverridesVisitChildren), &s_info);
    5959        }
    6060
  • trunk/Source/JavaScriptCore/runtime/JSStaticScopeObject.h

    r94875 r94929  
    5050        void putWithAttributes(ExecState*, const Identifier&, JSValue, unsigned attributes);
    5151
    52         static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info); }
     52        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info); }
    5353
    5454    protected:
  • trunk/Source/JavaScriptCore/runtime/JSString.h

    r94599 r94929  
    439439        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    440440        {
    441             return Structure::create(globalData, globalObject, proto, TypeInfo(StringType, OverridesGetOwnPropertySlot), AnonymousSlotCount, &s_info);
     441            return Structure::create(globalData, globalObject, proto, TypeInfo(StringType, OverridesGetOwnPropertySlot), &s_info);
    442442        }
    443443       
  • trunk/Source/JavaScriptCore/runtime/JSVariableObject.h

    r94599 r94929  
    6464        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    6565        {
    66             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     66            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    6767        }
    6868       
  • trunk/Source/JavaScriptCore/runtime/JSWrapperObject.h

    r94599 r94929  
    3838        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    3939        {
    40             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     40            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    4141        }
    4242
  • trunk/Source/JavaScriptCore/runtime/MathObject.h

    r94875 r94929  
    4646        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4747        {
    48             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     48            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    4949        }
    5050
  • trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.h

    r94875 r94929  
    4444        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4545        {
    46             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     46            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    4747        }
    4848
  • trunk/Source/JavaScriptCore/runtime/NumberConstructor.h

    r94875 r94929  
    4545        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    4646        {
    47             return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     47            return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info);
    4848        }
    4949
  • trunk/Source/JavaScriptCore/runtime/NumberObject.h

    r94875 r94929  
    4545        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4646        {
    47             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     47            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    4848        }
    4949
  • trunk/Source/JavaScriptCore/runtime/NumberPrototype.cpp

    r94875 r94929  
    7777}
    7878
    79 void NumberPrototype::finishCreation(ExecState* exec, JSGlobalObject* globalObject)
     79void NumberPrototype::finishCreation(ExecState* exec, JSGlobalObject*)
    8080{
    8181    Base::finishCreation(exec->globalData());
     
    8383
    8484    ASSERT(inherits(&s_info));
    85     putAnonymousValue(globalObject->globalData(), 0, globalObject);
    8685}
    8786
  • trunk/Source/JavaScriptCore/runtime/NumberPrototype.h

    r94875 r94929  
    3939        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4040        {
    41             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     41            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    4242        }
    4343
     
    4545        void finishCreation(ExecState*, JSGlobalObject*);
    4646        static const unsigned StructureFlags = OverridesGetOwnPropertySlot | NumberObject::StructureFlags;
    47         static const unsigned AnonymousSlotCount = NumberObject::AnonymousSlotCount + 1;
    4847
    4948    private:
  • trunk/Source/JavaScriptCore/runtime/ObjectConstructor.h

    r94875 r94929  
    4444        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4545        {
    46             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     46            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    4747        }
    4848
  • trunk/Source/JavaScriptCore/runtime/ObjectPrototype.cpp

    r94364 r94929  
    7070}
    7171
    72 void ObjectPrototype::finishCreation(JSGlobalData& globalData, JSGlobalObject* globalObject)
     72void ObjectPrototype::finishCreation(JSGlobalData& globalData, JSGlobalObject*)
    7373{
    7474    Base::finishCreation(globalData);
    7575    ASSERT(inherits(&s_info));
    76     putAnonymousValue(globalObject->globalData(), 0, globalObject);
    7776}
    7877
  • trunk/Source/JavaScriptCore/runtime/ObjectPrototype.h

    r94599 r94929  
    4141        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4242        {
    43             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     43            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    4444        }
    4545
    4646    protected:
    4747        static const unsigned StructureFlags = OverridesGetOwnPropertySlot | JSNonFinalObject::StructureFlags;
    48         static const unsigned AnonymousSlotCount = JSNonFinalObject::AnonymousSlotCount + 1;
    4948
    5049        void finishCreation(JSGlobalData&, JSGlobalObject*);
  • trunk/Source/JavaScriptCore/runtime/RegExp.h

    r94599 r94929  
    6969        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    7070        {
    71             return Structure::create(globalData, globalObject, prototype, TypeInfo(LeafType, 0), 0, &s_info);
     71            return Structure::create(globalData, globalObject, prototype, TypeInfo(LeafType, 0), &s_info);
    7272        }
    7373       
  • trunk/Source/JavaScriptCore/runtime/RegExpConstructor.h

    r94875 r94929  
    6767        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    6868        {
    69             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     69            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    7070        }
    7171
  • trunk/Source/JavaScriptCore/runtime/RegExpObject.h

    r94875 r94929  
    7474        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    7575        {
    76             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     76            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    7777        }
    7878
  • trunk/Source/JavaScriptCore/runtime/RegExpPrototype.h

    r94599 r94929  
    4040        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4141        {
    42             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     42            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    4343        }
    4444
  • trunk/Source/JavaScriptCore/runtime/ScopeChain.h

    r94599 r94929  
    8787#endif
    8888       
    89         static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(CompoundType, StructureFlags), AnonymousSlotCount, &s_info); }
     89        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(CompoundType, StructureFlags), &s_info); }
    9090        virtual void visitChildren(SlotVisitor&);
    9191        static JS_EXPORTDATA const ClassInfo s_info;
  • trunk/Source/JavaScriptCore/runtime/StrictEvalActivation.h

    r94599 r94929  
    4848    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4949    {
    50         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     50        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    5151    }
    5252   
  • trunk/Source/JavaScriptCore/runtime/StringConstructor.h

    r94875 r94929  
    4141        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4242        {
    43             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     43            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    4444        }
    4545
  • trunk/Source/JavaScriptCore/runtime/StringObject.h

    r94875 r94929  
    6161        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    6262        {
    63             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     63            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    6464        }
    6565
  • trunk/Source/JavaScriptCore/runtime/StringObjectThatMasqueradesAsUndefined.h

    r94875 r94929  
    4949        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    5050        {
    51             return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     51            return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), &s_info);
    5252        }
    5353
  • trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp

    r94875 r94929  
    138138}
    139139
    140 void StringPrototype::finishCreation(ExecState* exec, JSGlobalObject* globalObject, JSString* nameAndMessage)
     140void StringPrototype::finishCreation(ExecState* exec, JSGlobalObject*, JSString* nameAndMessage)
    141141{
    142142    Base::finishCreation(exec->globalData(), nameAndMessage);
    143143    ASSERT(inherits(&s_info));
    144144
    145     putAnonymousValue(exec->globalData(), 0, globalObject);
    146145    // The constructor will be added later, after StringConstructor has been built
    147146    putDirectWithoutTransition(exec->globalData(), exec->propertyNames().length, jsNumber(0), DontDelete | ReadOnly | DontEnum);
  • trunk/Source/JavaScriptCore/runtime/StringPrototype.h

    r94875 r94929  
    4545        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4646        {
    47             return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     47            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    4848        }
    4949
     
    5454        static const unsigned StructureFlags = OverridesGetOwnPropertySlot | StringObject::StructureFlags;
    5555
    56         COMPILE_ASSERT(!StringObject::AnonymousSlotCount, StringPrototype_stomps_on_your_anonymous_slot);
    57         static const unsigned AnonymousSlotCount = 1;
    5856    };
    5957
  • trunk/Source/JavaScriptCore/runtime/Structure.cpp

    r94701 r94929  
    160160}
    161161
    162 Structure::Structure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype, const TypeInfo& typeInfo, unsigned anonymousSlotCount, const ClassInfo* classInfo)
     162Structure::Structure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype, const TypeInfo& typeInfo, const ClassInfo* classInfo)
    163163    : JSCell(globalData, globalData.structureStructure.get())
    164164    , m_typeInfo(typeInfo)
     
    174174    , m_attributesInPrevious(0)
    175175    , m_specificFunctionThrashCount(0)
    176     , m_anonymousSlotCount(anonymousSlotCount)
    177176    , m_preventExtensions(false)
    178177    , m_didTransition(false)
     
    195194    , m_attributesInPrevious(0)
    196195    , m_specificFunctionThrashCount(0)
    197     , m_anonymousSlotCount(0)
    198196    , m_preventExtensions(false)
    199197    , m_didTransition(false)
     
    214212    , m_attributesInPrevious(0)
    215213    , m_specificFunctionThrashCount(previous->m_specificFunctionThrashCount)
    216     , m_anonymousSlotCount(previous->anonymousSlotCount())
    217214    , m_preventExtensions(previous->m_preventExtensions)
    218215    , m_didTransition(true)
     
    254251    for (ptrdiff_t i = structures.size() - 2; i >= 0; --i) {
    255252        structure = structures[i];
    256         PropertyMapEntry entry(globalData, this, structure->m_nameInPrevious.get(), m_anonymousSlotCount + structure->m_offset, structure->m_attributesInPrevious, structure->m_specificValueInPrevious.get());
     253        PropertyMapEntry entry(globalData, this, structure->m_nameInPrevious.get(), structure->m_offset, structure->m_attributesInPrevious, structure->m_specificValueInPrevious.get());
    257254        m_propertyTable->add(entry);
    258255    }
     
    291288            return 0;
    292289        ASSERT(existingTransition->m_offset != noOffset);
    293         offset = existingTransition->m_offset + existingTransition->m_anonymousSlotCount;
    294         ASSERT(offset >= structure->m_anonymousSlotCount);
    295         ASSERT(structure->m_anonymousSlotCount == existingTransition->m_anonymousSlotCount);
     290        offset = existingTransition->m_offset;
    296291        return existingTransition;
    297292    }
     
    323318        ASSERT(structure != transition);
    324319        offset = transition->putSpecificValue(globalData, propertyName, attributes, specificValue);
    325         ASSERT(offset >= structure->m_anonymousSlotCount);
    326         ASSERT(structure->m_anonymousSlotCount == transition->m_anonymousSlotCount);
    327320        if (transition->propertyStorageSize() > transition->propertyStorageCapacity())
    328321            transition->growPropertyStorageCapacity();
     
    351344
    352345    offset = transition->putSpecificValue(globalData, propertyName, attributes, specificValue);
    353     ASSERT(offset >= structure->m_anonymousSlotCount);
    354     ASSERT(structure->m_anonymousSlotCount == transition->m_anonymousSlotCount);
    355346    if (transition->propertyStorageSize() > transition->propertyStorageCapacity())
    356347        transition->growPropertyStorageCapacity();
    357348
    358     transition->m_offset = offset - structure->m_anonymousSlotCount;
    359     ASSERT(structure->anonymousSlotCount() == transition->anonymousSlotCount());
     349    transition->m_offset = offset;
    360350    structure->m_transitionTable.add(globalData, transition);
    361351    return transition;
     
    369359
    370360    offset = transition->remove(propertyName);
    371     ASSERT(offset >= structure->m_anonymousSlotCount);
    372     ASSERT(structure->m_anonymousSlotCount == transition->m_anonymousSlotCount);
    373361
    374362    return transition;
     
    386374    transition->m_propertyTable = structure->copyPropertyTable(globalData, transition);
    387375    transition->m_isPinnedPropertyTable = true;
    388    
    389     ASSERT(structure->anonymousSlotCount() == transition->anonymousSlotCount());
     376
    390377    return transition;
    391378}
     
    410397        ASSERT_UNUSED(removed, removed);
    411398    }
    412    
    413     ASSERT(structure->anonymousSlotCount() == transition->anonymousSlotCount());
     399
    414400    return transition;
    415401}
     
    424410    transition->m_propertyTable = structure->copyPropertyTable(globalData, transition);
    425411    transition->m_isPinnedPropertyTable = true;
    426    
    427     ASSERT(structure->anonymousSlotCount() == transition->anonymousSlotCount());
     412
    428413    return transition;
    429414}
     
    439424    transition->m_isPinnedPropertyTable = true;
    440425    transition->m_dictionaryKind = kind;
    441    
    442     ASSERT(structure->anonymousSlotCount() == transition->anonymousSlotCount());
     426
    443427    return transition;
    444428}
     
    494478    transition->m_preventExtensions = true;
    495479
    496     ASSERT(structure->anonymousSlotCount() == transition->anonymousSlotCount());
    497480    return transition;
    498481}
     
    540523        ASSERT(m_propertyTable);
    541524
    542         unsigned anonymousSlotCount = m_anonymousSlotCount;
    543525        size_t propertyCount = m_propertyTable->size();
    544526        Vector<JSValue> values(propertyCount);
     
    549531            values[i] = object->getDirectOffset(iter->offset);
    550532            // Update property table to have the new property offsets
    551             iter->offset = anonymousSlotCount + i;
     533            iter->offset = i;
    552534        }
    553535       
    554536        // Copy the original property values into their final locations
    555537        for (unsigned i = 0; i < propertyCount; i++)
    556             object->putDirectOffset(globalData, anonymousSlotCount + i, values[i]);
     538            object->putDirectOffset(globalData, i, values[i]);
    557539
    558540        m_propertyTable->clearDeletedOffsets();
     
    575557
    576558    size_t offset = putSpecificValue(globalData, propertyName, attributes, specificValue);
    577     ASSERT(offset >= m_anonymousSlotCount);
    578559    if (propertyStorageSize() > propertyStorageCapacity())
    579560        growPropertyStorageCapacity();
     
    590571    m_isPinnedPropertyTable = true;
    591572    size_t offset = remove(propertyName);
    592     ASSERT(offset >= m_anonymousSlotCount);
    593573    return offset;
    594574}
     
    638618    attributes = entry->attributes;
    639619    specificValue = entry->specificValue.get();
    640     ASSERT(entry->offset >= m_anonymousSlotCount);
    641620    return entry->offset;
    642621}
     
    688667        newOffset = m_propertyTable->getDeletedOffset();
    689668    else
    690         newOffset = m_propertyTable->size() + m_anonymousSlotCount;
    691     ASSERT(newOffset >= m_anonymousSlotCount);
     669        newOffset = m_propertyTable->size();
    692670
    693671    m_propertyTable->add(PropertyMapEntry(globalData, this, rep, newOffset, attributes, specificValue));
     
    713691
    714692    size_t offset = position.first->offset;
    715     ASSERT(offset >= m_anonymousSlotCount);
    716693
    717694    m_propertyTable->remove(position);
     
    845822        for (PropertyTable::iterator iter = m_propertyTable->begin(); iter != end; ++iter) {
    846823            ASSERT(!(iter->attributes & DontEnum));
    847             ASSERT(iter->offset >= m_anonymousSlotCount);
    848824        }
    849825    }
  • trunk/Source/JavaScriptCore/runtime/Structure.h

    r94701 r94929  
    6363        typedef JSCell Base;
    6464
    65         static Structure* create(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype, const TypeInfo& typeInfo, unsigned anonymousSlotCount, const ClassInfo* classInfo)
     65        static Structure* create(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype, const TypeInfo& typeInfo, const ClassInfo* classInfo)
    6666        {
    6767            ASSERT(globalData.structureStructure);
    6868            ASSERT(classInfo);
    69             Structure* structure = new (allocateCell<Structure>(globalData.heap)) Structure(globalData, globalObject, prototype, typeInfo, anonymousSlotCount, classInfo);
     69            Structure* structure = new (allocateCell<Structure>(globalData.heap)) Structure(globalData, globalObject, prototype, typeInfo, classInfo);
    7070            structure->finishCreation(globalData);
    7171            return structure;
     
    134134        void growPropertyStorageCapacity();
    135135        unsigned propertyStorageCapacity() const { ASSERT(structure()->classInfo() == &s_info); return m_propertyStorageCapacity; }
    136         unsigned propertyStorageSize() const { ASSERT(structure()->classInfo() == &s_info); return m_anonymousSlotCount + (m_propertyTable ? m_propertyTable->propertyStorageSize() : static_cast<unsigned>(m_offset + 1)); }
     136        unsigned propertyStorageSize() const { ASSERT(structure()->classInfo() == &s_info); return (m_propertyTable ? m_propertyTable->propertyStorageSize() : static_cast<unsigned>(m_offset + 1)); }
    137137        bool isUsingInlineStorage() const;
    138138
     
    151151
    152152        bool hasNonEnumerableProperties() const { return m_hasNonEnumerableProperties; }
    153 
    154         bool hasAnonymousSlots() const { return !!m_anonymousSlotCount; }
    155         unsigned anonymousSlotCount() const { return m_anonymousSlotCount; }
    156153       
    157154        bool isEmpty() const { return m_propertyTable ? m_propertyTable->isEmpty() : m_offset == noOffset; }
     
    192189
    193190    private:
    194         Structure(JSGlobalData&, JSGlobalObject*, JSValue prototype, const TypeInfo&, unsigned anonymousSlotCount, const ClassInfo*);
     191        Structure(JSGlobalData&, JSGlobalObject*, JSValue prototype, const TypeInfo&, const ClassInfo*);
    195192        Structure(JSGlobalData&);
    196193        Structure(JSGlobalData&, const Structure*);
     
    279276#endif
    280277        unsigned m_specificFunctionThrashCount : 2;
    281         unsigned m_anonymousSlotCount : 5;
    282278        unsigned m_preventExtensions : 1;
    283279        unsigned m_didTransition : 1;
    284         // 3 free bits
     280        // 8 free bits
    285281    };
    286282
     
    293289
    294290        PropertyMapEntry* entry = m_propertyTable->find(propertyName.impl()).first;
    295         ASSERT(!entry || entry->offset >= m_anonymousSlotCount);
    296291        return entry ? entry->offset : notFound;
    297292    }
     
    305300
    306301        PropertyMapEntry* entry = m_propertyTable->findWithString(name.impl()).first;
    307         ASSERT(!entry || entry->offset >= m_anonymousSlotCount);
    308302        return entry ? entry->offset : notFound;
    309303    }
  • trunk/Source/JavaScriptCore/runtime/StructureChain.h

    r94599 r94929  
    5555        void visitChildren(SlotVisitor&);
    5656
    57         static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype) { return Structure::create(globalData, globalObject, prototype, TypeInfo(CompoundType, OverridesVisitChildren), 0, &s_info); }
     57        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype) { return Structure::create(globalData, globalObject, prototype, TypeInfo(CompoundType, OverridesVisitChildren), &s_info); }
    5858       
    5959        static ClassInfo s_info;
  • trunk/Source/JavaScriptGlue/ChangeLog

    r94920 r94929  
     12011-09-09  Oliver Hunt  <oliver@apple.com>
     2
     3        Remove support for anonymous storage from jsobjects
     4        https://bugs.webkit.org/show_bug.cgi?id=67881
     5
     6        Reviewed by Sam Weinig.
     7
     8        Don't need an anonymous slot count anymore
     9
     10        * UserObjectImp.h:
     11        (UserObjectImp::createStructure):
     12
    1132011-08-18  Filip Pizlo  <fpizlo@apple.com>
    214
  • trunk/Source/JavaScriptGlue/UserObjectImp.h

    r94599 r94929  
    6969    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    7070    {
    71         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, OverridesGetOwnPropertySlot | OverridesVisitChildren | OverridesGetPropertyNames), AnonymousSlotCount, &s_info);
     71        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, OverridesGetOwnPropertySlot | OverridesVisitChildren | OverridesGetPropertyNames), &s_info);
    7272    }
    7373
  • trunk/Source/WebCore/ChangeLog

    r94920 r94929  
     12011-09-09  Oliver Hunt  <oliver@apple.com>
     2
     3        Remove support for anonymous storage from jsobjects
     4        https://bugs.webkit.org/show_bug.cgi?id=67881
     5
     6        Reviewed by Sam Weinig.
     7
     8        Remove all use of anonymous slots, this required modifying
     9        bindings generation to add member variables for cached attributes,
     10        and override visitChildren with the necessary logic to mark those
     11        new members.
     12
     13        I added bindings generation tests for these values.
     14
     15        * bindings/js/JSAudioConstructor.h:
     16        (WebCore::JSAudioConstructor::createStructure):
     17        * bindings/js/JSDOMBinding.h:
     18        (WebCore::DOMConstructorObject::createStructure):
     19        * bindings/js/JSDOMGlobalObject.h:
     20        (WebCore::JSDOMGlobalObject::createStructure):
     21        * bindings/js/JSDOMWindowBase.h:
     22        (WebCore::JSDOMWindowBase::createStructure):
     23        * bindings/js/JSDOMWindowShell.h:
     24        (WebCore::JSDOMWindowShell::createStructure):
     25        * bindings/js/JSDOMWrapper.h:
     26        (WebCore::JSDOMWrapper::createStructure):
     27        * bindings/js/JSImageConstructor.h:
     28        (WebCore::JSImageConstructor::createStructure):
     29        * bindings/js/JSMessageEventCustom.cpp:
     30        (WebCore::JSMessageEvent::data):
     31        (WebCore::JSMessageEvent::initMessageEvent):
     32        * bindings/js/JSOptionConstructor.h:
     33        (WebCore::JSOptionConstructor::createStructure):
     34        * bindings/js/JSWorkerContextBase.h:
     35        (WebCore::JSWorkerContextBase::createStructure):
     36        * bindings/scripts/CodeGeneratorJS.pm:
     37        (GenerateHeader):
     38        (GenerateImplementation):
     39        (GenerateConstructorDeclaration):
     40        * bindings/scripts/test/JS/JSTestInterface.cpp:
     41        (WebCore::JSTestInterfaceConstructor::createStructure):
     42        * bindings/scripts/test/JS/JSTestInterface.h:
     43        (WebCore::JSTestInterface::createStructure):
     44        (WebCore::JSTestInterfacePrototype::createStructure):
     45        * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
     46        (WebCore::JSTestMediaQueryListListenerConstructor::createStructure):
     47        * bindings/scripts/test/JS/JSTestMediaQueryListListener.h:
     48        (WebCore::JSTestMediaQueryListListener::createStructure):
     49        (WebCore::JSTestMediaQueryListListenerPrototype::createStructure):
     50        * bindings/scripts/test/JS/JSTestObj.cpp:
     51        (WebCore::JSTestObjConstructor::createStructure):
     52        (WebCore::jsTestObjCachedAttribute1):
     53        (WebCore::jsTestObjCachedAttribute2):
     54        (WebCore::JSTestObj::visitChildren):
     55        * bindings/scripts/test/JS/JSTestObj.h:
     56        (WebCore::JSTestObj::createStructure):
     57        (WebCore::JSTestObjPrototype::createStructure):
     58        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
     59        (WebCore::JSTestSerializedScriptValueInterfaceConstructor::createStructure):
     60        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
     61        (WebCore::JSTestSerializedScriptValueInterface::createStructure):
     62        (WebCore::JSTestSerializedScriptValueInterfacePrototype::createStructure):
     63        * bindings/scripts/test/TestObj.idl:
     64        * bindings/scripts/test/V8/V8TestObj.cpp:
     65        (WebCore::TestObjInternal::cachedAttribute1AttrGetter):
     66        (WebCore::TestObjInternal::cachedAttribute2AttrGetter):
     67        * bridge/c/CRuntimeObject.h:
     68        (JSC::Bindings::CRuntimeObject::createStructure):
     69        * bridge/c/c_instance.cpp:
     70        (JSC::Bindings::CRuntimeMethod::createStructure):
     71        * bridge/jni/jsc/JavaInstanceJSC.cpp:
     72        (JavaRuntimeMethod::createStructure):
     73        * bridge/jni/jsc/JavaRuntimeObject.h:
     74        (JSC::Bindings::JavaRuntimeObject::createStructure):
     75        * bridge/objc/ObjCRuntimeObject.h:
     76        (JSC::Bindings::ObjCRuntimeObject::createStructure):
     77        * bridge/objc/objc_instance.mm:
     78        (ObjCRuntimeMethod::createStructure):
     79        * bridge/objc/objc_runtime.h:
     80        (JSC::Bindings::ObjcFallbackObjectImp::createStructure):
     81        * bridge/runtime_array.h:
     82        (JSC::RuntimeArray::createStructure):
     83        * bridge/runtime_method.h:
     84        (JSC::RuntimeMethod::createStructure):
     85        * bridge/runtime_object.h:
     86        (JSC::Bindings::RuntimeObject::createStructure):
     87
    1882011-09-01  Filip Pizlo  <fpizlo@apple.com>
    289
  • trunk/Source/WebCore/bindings/js/JSAudioConstructor.h

    r94599 r94929  
    4646        static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    4747        {
    48             return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     48            return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    4949        }
    5050
  • trunk/Source/WebCore/bindings/js/JSDOMBinding.h

    r94875 r94929  
    4848        static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    4949        {
    50             return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     50            return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    5151        }
    5252
  • trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.h

    r94875 r94929  
    7373        static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype)
    7474        {
    75             return JSC::Structure::create(globalData, 0, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     75            return JSC::Structure::create(globalData, 0, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    7676        }
    7777
  • trunk/Source/WebCore/bindings/js/JSDOMWindowBase.h

    r94599 r94929  
    5353        static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype)
    5454        {
    55             return JSC::Structure::create(globalData, 0, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     55            return JSC::Structure::create(globalData, 0, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    5656        }
    5757
  • trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h

    r94875 r94929  
    6565        static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype)
    6666        {
    67             return JSC::Structure::create(globalData, 0, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     67            return JSC::Structure::create(globalData, 0, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    6868        }
    6969
  • trunk/Source/WebCore/bindings/js/JSDOMWrapper.h

    r94875 r94929  
    4545    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    4646    {
    47         return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     47        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    4848    }
    4949
  • trunk/Source/WebCore/bindings/js/JSImageConstructor.h

    r94599 r94929  
    3737        static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    3838        {
    39             return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     39            return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    4040        }
    4141
  • trunk/Source/WebCore/bindings/js/JSMessageEventCustom.cpp

    r94161 r94929  
    4747JSValue JSMessageEvent::data(ExecState* exec) const
    4848{
    49     if (JSValue cachedValue = getAnonymousValue(JSMessageEvent::dataSlot))
     49    if (JSValue cachedValue = m_data.get())
    5050        return cachedValue;
    5151
     
    7474
    7575    // Save the result so we don't have to deserialize the value again.
    76     const_cast<JSMessageEvent*>(this)->putAnonymousValue(exec->globalData(), JSMessageEvent::dataSlot, result);
     76    const_cast<JSMessageEvent*>(this)->m_data.set(exec->globalData(), this, result);
    7777    return result;
    7878}
     
    116116    else
    117117        result = jsNull();
    118     putAnonymousValue(exec->globalData(), JSMessageEvent::dataSlot, result);
     118    m_data.set(exec->globalData(), this, result);
    119119    return jsUndefined();
    120120}
  • trunk/Source/WebCore/bindings/js/JSOptionConstructor.h

    r94599 r94929  
    3838        static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    3939        {
    40             return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     40            return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    4141        }
    4242
  • trunk/Source/WebCore/bindings/js/JSWorkerContextBase.h

    r94599 r94929  
    5252        static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    5353        {
    54             return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     54            return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    5555        }
    5656
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm

    r94875 r94929  
    804804        "    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)\n" .
    805805        "    {\n" .
    806         "        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);\n" .
     806        "        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);\n" .
    807807        "    }\n\n");
    808 
    809     # visit function
    810     if ($needsMarkChildren) {
    811         push(@headerContent, "    virtual void visitChildren(JSC::SlotVisitor&);\n\n");
    812         $structureFlags{"JSC::OverridesVisitChildren"} = 1;
    813     }
    814808
    815809    # Custom pushEventHandlerScope function
     
    869863            $numCustomAttributes++ if $attribute->signature->extendedAttributes->{"CustomSetter"} || $attribute->signature->extendedAttributes->{"JSCCustomSetter"};
    870864            if ($attribute->signature->extendedAttributes->{"CachedAttribute"}) {
    871                 push(@headerContent, "    static const unsigned " . $attribute->signature->name . "Slot = $numCachedAttributes + Base::AnonymousSlotCount;\n");
     865                push(@headerContent, "    JSC::WriteBarrier<JSC::Unknown> m_" . $attribute->signature->name . ";\n");
    872866                $numCachedAttributes++;
    873             }
    874         }
    875     }
    876 
    877     if ($numCachedAttributes > 0) {
    878         push(@headerContent, "    using $parentClassName" . "::putAnonymousValue;\n");
    879         push(@headerContent, "    using $parentClassName" . "::getAnonymousValue;\n");
    880     }
     867                $needsMarkChildren = 1;
     868            }
     869        }
     870    }
     871
     872    # visit function
     873    if ($needsMarkChildren) {
     874        push(@headerContent, "    virtual void visitChildren(JSC::SlotVisitor&);\n\n");
     875        $structureFlags{"JSC::OverridesVisitChildren"} = 1;
     876    }
     877
    881878    if ($numCustomAttributes > 0) {
    882879        push(@headerContent, "\n    // Custom attributes\n");
     
    921918        push(@headerContent, "        return static_cast<$implClassName*>(Base::impl());\n");
    922919        push(@headerContent, "    }\n");
    923     }
    924    
    925     # anonymous slots
    926     if ($numCachedAttributes) {
    927         push(@headerContent, "public:\n");
    928         push(@headerContent, "    static const unsigned AnonymousSlotCount = $numCachedAttributes + Base::AnonymousSlotCount;\n");
    929920    }
    930921
     
    10471038        "    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)\n" .
    10481039        "    {\n" .
    1049         "        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);\n" .
     1040        "        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);\n" .
    10501041        "    }\n");
    10511042    if ($dataNode->extendedAttributes->{"DelegatingPrototypePutFunction"}) {
     
    15341525    }
    15351526    push(@implContent, "    ASSERT(inherits(&s_info));\n");
    1536     if ($numCachedAttributes > 0) {
    1537         push(@implContent, "    for (unsigned i = Base::AnonymousSlotCount; i < AnonymousSlotCount; i++)\n");
    1538         push(@implContent, "        putAnonymousValue(globalObject->globalData(), i, JSValue());\n");
    1539     }
    15401527    push(@implContent, "}\n\n");
    1541 
    1542     if ($needsMarkChildren && !$dataNode->extendedAttributes->{"CustomMarkFunction"}) {
    1543         push(@implContent, "void ${className}::visitChildren(SlotVisitor& visitor)\n");
    1544         push(@implContent, "{\n");
    1545         push(@implContent, "    ASSERT_GC_OBJECT_INHERITS(this, &s_info);\n");
    1546         push(@implContent, "    COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag);\n");
    1547         push(@implContent, "    ASSERT(structure()->typeInfo().overridesVisitChildren());\n");
    1548         push(@implContent, "    Base::visitChildren(visitor);\n");
    1549         push(@implContent, "    impl()->visitJSEventListeners(visitor);\n");
    1550         push(@implContent, "}\n\n");
    1551     }
    15521528
    15531529    if (!$dataNode->extendedAttributes->{"ExtendsDOMGlobalObject"}) {
     
    16181594                push(@implContent, "{\n");
    16191595                push(@implContent, "    ${className}* castedThis = static_cast<$className*>(asObject(slotBase));\n");
     1596
     1597                if ($attribute->signature->extendedAttributes->{"CachedAttribute"}) {
     1598                    $needsMarkChildren = 1;
     1599                }
    16201600
    16211601                if ($dataNode->extendedAttributes->{"CheckDomainSecurity"} &&
     
    16641644                        $cacheIndex = $currentCachedAttribute;
    16651645                        $currentCachedAttribute++;
    1666                         push(@implContent, "    if (JSValue cachedValue = castedThis->getAnonymousValue(" . $className . "::" . $attribute->signature->name . "Slot))\n");
     1646                        push(@implContent, "    if (JSValue cachedValue = m_" . $attribute->signature->name . ".get())\n");
    16671647                        push(@implContent, "        return cachedValue;\n");
    16681648                    }
     
    16891669                    }
    16901670                   
    1691                     push(@implContent, "    castedThis->putAnonymousValue(exec->globalData(), " . $className . "::" . $attribute->signature->name . "Slot, result);\n") if ($attribute->signature->extendedAttributes->{"CachedAttribute"});
     1671                    push(@implContent, "    m_" . $attribute->signature->name . ".set(exec->globalData(), this, result);\n") if ($attribute->signature->extendedAttributes->{"CachedAttribute"});
    16921672                    push(@implContent, "    return result;\n");
    16931673
     
    21932173                }
    21942174            }
     2175
    21952176            push(@implContent, "}\n\n");
    21962177
     
    22042185            }
    22052186        }
     2187       
     2188        if ($needsMarkChildren && !$dataNode->extendedAttributes->{"CustomMarkFunction"}) {
     2189            push(@implContent, "void ${className}::visitChildren(SlotVisitor& visitor)\n");
     2190            push(@implContent, "{\n");
     2191            push(@implContent, "    ASSERT_GC_OBJECT_INHERITS(this, &s_info);\n");
     2192            push(@implContent, "    COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag);\n");
     2193            push(@implContent, "    ASSERT(structure()->typeInfo().overridesVisitChildren());\n");
     2194            push(@implContent, "    Base::visitChildren(visitor);\n");
     2195            if ($dataNode->extendedAttributes->{"EventTarget"}) {
     2196                push(@implContent, "    impl()->visitJSEventListeners(visitor);\n");
     2197            }
     2198            if ($numCachedAttributes > 0) {
     2199                foreach (@{$dataNode->attributes}) {
     2200                    my $attribute = $_;
     2201                    if ($attribute->signature->extendedAttributes->{"CachedAttribute"}) {
     2202                        push(@implContent, "    if (m_" . $attribute->signature->name . ")\n");
     2203                        push(@implContent, "        visitor.append(&m_" . $attribute->signature->name . ");\n");
     2204                    }
     2205                }
     2206            }
     2207            push(@implContent, "}\n\n");
     2208        }
     2209        die "Can't generate binding for class with cached attribute and custom mark." if (($numCachedAttributes > 0) and ($dataNode->extendedAttributes->{"CustomMarkFunction"}));
    22062210    }
    22072211
     
    31183122    push(@$outputArray, "    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)\n");
    31193123    push(@$outputArray, "    {\n");
    3120     push(@$outputArray, "        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);\n");
     3124    push(@$outputArray, "        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);\n");
    31213125    push(@$outputArray, "    }\n");
    31223126
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp

    r94875 r94929  
    7979    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    8080    {
    81         return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     81        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    8282    }
    8383protected:
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h

    r94766 r94929  
    4747    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    4848    {
    49         return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     49        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    5050    }
    5151
     
    7575    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    7676    {
    77         return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     77        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    7878    }
    7979
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp

    r94875 r94929  
    8080    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    8181    {
    82         return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     82        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    8383    }
    8484protected:
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h

    r94766 r94929  
    4545    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    4646    {
    47         return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     47        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    4848    }
    4949
     
    7575    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    7676    {
    77         return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     77        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    7878    }
    7979
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp

    r94875 r94929  
    117117    { "conditionalAttr6", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjConditionalAttr6Constructor), (intptr_t)setJSTestObjConditionalAttr6Constructor THUNK_GENERATOR(0) },
    118118#endif
     119    { "cachedAttribute1", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCachedAttribute1), (intptr_t)0 THUNK_GENERATOR(0) },
     120    { "cachedAttribute2", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjCachedAttribute2), (intptr_t)0 THUNK_GENERATOR(0) },
    119121    { "description", DontDelete | ReadOnly, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjDescription), (intptr_t)0 THUNK_GENERATOR(0) },
    120122    { "id", DontDelete, (intptr_t)static_cast<PropertySlot::GetValueFunc>(jsTestObjId), (intptr_t)setJSTestObjId THUNK_GENERATOR(0) },
     
    125127
    126128#undef THUNK_GENERATOR
    127 static JSC_CONST_HASHTABLE HashTable JSTestObjTable = { 134, 127, JSTestObjTableValues, 0 };
     129static JSC_CONST_HASHTABLE HashTable JSTestObjTable = { 135, 127, JSTestObjTableValues, 0 };
    128130/* Hash table for constructor */
    129131#if ENABLE(JIT)
     
    180182    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    181183    {
    182         return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     184        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    183185    }
    184186protected:
     
    671673#endif
    672674
     675JSValue jsTestObjCachedAttribute1(ExecState* exec, JSValue slotBase, const Identifier&)
     676{
     677    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
     678    UNUSED_PARAM(exec);
     679    if (JSValue cachedValue = m_cachedAttribute1.get())
     680        return cachedValue;
     681    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
     682    JSValue result = imp->cachedAttribute1() ? imp->cachedAttribute1()->deserialize(exec, castedThis->globalObject()) : jsNull();
     683    m_cachedAttribute1.set(exec->globalData(), this, result);
     684    return result;
     685}
     686
     687
     688JSValue jsTestObjCachedAttribute2(ExecState* exec, JSValue slotBase, const Identifier&)
     689{
     690    JSTestObj* castedThis = static_cast<JSTestObj*>(asObject(slotBase));
     691    UNUSED_PARAM(exec);
     692    if (JSValue cachedValue = m_cachedAttribute2.get())
     693        return cachedValue;
     694    TestObj* imp = static_cast<TestObj*>(castedThis->impl());
     695    JSValue result = imp->cachedAttribute2() ? imp->cachedAttribute2()->deserialize(exec, castedThis->globalObject()) : jsNull();
     696    m_cachedAttribute2.set(exec->globalData(), this, result);
     697    return result;
     698}
     699
     700
    673701JSValue jsTestObjDescription(ExecState* exec, JSValue slotBase, const Identifier&)
    674702{
     
    18161844}
    18171845
     1846void JSTestObj::visitChildren(SlotVisitor& visitor)
     1847{
     1848    ASSERT_GC_OBJECT_INHERITS(this, &s_info);
     1849    COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag);
     1850    ASSERT(structure()->typeInfo().overridesVisitChildren());
     1851    Base::visitChildren(visitor);
     1852    if (m_cachedAttribute1)
     1853        visitor.append(&m_cachedAttribute1);
     1854    if (m_cachedAttribute2)
     1855        visitor.append(&m_cachedAttribute2);
     1856}
     1857
    18181858// Constant getters
    18191859
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h

    r94766 r94929  
    4646    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    4747    {
    48         return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     48        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    4949    }
    5050
    5151    static JSC::JSValue getConstructor(JSC::ExecState*, JSC::JSGlobalObject*);
     52    JSC::WriteBarrier<JSC::Unknown> m_cachedAttribute1;
     53    JSC::WriteBarrier<JSC::Unknown> m_cachedAttribute2;
     54    virtual void visitChildren(JSC::SlotVisitor&);
     55
    5256
    5357    // Custom attributes
     
    6468protected:
    6569    JSTestObj(JSC::Structure*, JSDOMGlobalObject*, PassRefPtr<TestObj>);
    66     static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags;
     70    static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::OverridesVisitChildren | Base::StructureFlags;
    6771};
    6872
     
    8488    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    8589    {
    86         return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     90        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    8791    }
    8892
     
    9094    JSTestObjPrototype(JSC::JSGlobalData& globalData, JSC::JSGlobalObject*, JSC::Structure* structure) : JSC::JSNonFinalObject(globalData, structure) { finishCreation(globalData); }
    9195protected:
    92     static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | Base::StructureFlags;
     96    static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::OverridesVisitChildren | Base::StructureFlags;
    9397};
    9498
     
    202206JSC::JSValue jsTestObjConditionalAttr6Constructor(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
    203207void setJSTestObjConditionalAttr6Constructor(JSC::ExecState*, JSC::JSObject*, JSC::JSValue);
     208JSC::JSValue jsTestObjCachedAttribute1(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
     209JSC::JSValue jsTestObjCachedAttribute2(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
    204210JSC::JSValue jsTestObjDescription(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
    205211JSC::JSValue jsTestObjId(JSC::ExecState*, JSC::JSValue, const JSC::Identifier&);
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp

    r94875 r94929  
    8181    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    8282    {
    83         return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     83        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    8484    }
    8585protected:
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h

    r94766 r94929  
    4747    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    4848    {
    49         return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     49        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    5050    }
    5151
     
    7575    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    7676    {
    77         return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     77        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    7878    }
    7979
  • trunk/Source/WebCore/bindings/scripts/test/TestObj.idl

    r94360 r94929  
    147147
    148148#if defined(TESTING_V8) || defined(TESTING_JS)
     149        readonly attribute [CachedAttribute] any cachedAttribute1;
     150        readonly attribute [CachedAttribute] any cachedAttribute2;
     151#endif
     152
     153#if defined(TESTING_V8) || defined(TESTING_JS)
    149154        // Overloads
    150155        void    overloadedMethod(in TestObj objArg, in DOMString strArg);
  • trunk/Source/WebCore/bindings/scripts/test/V8/V8TestObj.cpp

    r94891 r94929  
    4040#include "V8Proxy.h"
    4141#include "V8TestCallback.h"
     42#include "V8any.h"
    4243#include "V8int.h"
    4344#include "V8log.h"
     
    580581
    581582#endif // ENABLE(Condition1) || ENABLE(Condition2)
     583
     584static v8::Handle<v8::Value> cachedAttribute1AttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
     585{
     586    INC_STATS("DOM.TestObj.cachedAttribute1._get");
     587    TestObj* imp = V8TestObj::toNative(info.Holder());
     588    RefPtr<any> result = imp->cachedAttribute1();
     589    v8::Handle<v8::Value> wrapper = result.get() ? getDOMObjectMap().get(result.get()) : v8::Handle<v8::Value>();
     590    if (wrapper.IsEmpty()) {
     591        wrapper = toV8(result.get());
     592        if (!wrapper.IsEmpty())
     593            V8DOMWrapper::setNamedHiddenReference(info.Holder(), "cachedAttribute1", wrapper);
     594    }
     595    return wrapper;
     596}
     597
     598static v8::Handle<v8::Value> cachedAttribute2AttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
     599{
     600    INC_STATS("DOM.TestObj.cachedAttribute2._get");
     601    TestObj* imp = V8TestObj::toNative(info.Holder());
     602    RefPtr<any> result = imp->cachedAttribute2();
     603    v8::Handle<v8::Value> wrapper = result.get() ? getDOMObjectMap().get(result.get()) : v8::Handle<v8::Value>();
     604    if (wrapper.IsEmpty()) {
     605        wrapper = toV8(result.get());
     606        if (!wrapper.IsEmpty())
     607            V8DOMWrapper::setNamedHiddenReference(info.Holder(), "cachedAttribute2", wrapper);
     608    }
     609    return wrapper;
     610}
    582611
    583612static v8::Handle<v8::Value> enabledAtRuntimeAttr1AttrGetter(v8::Local<v8::String> name, const v8::AccessorInfo& info)
     
    12781307    {"conditionalAttr6", TestObjInternal::TestObjConstructorGetter, 0, &V8TestObjectC::info, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::ReadOnly), 0 /* on instance */},
    12791308#endif // ENABLE(Condition1) || ENABLE(Condition2)
     1309    // Attribute 'cachedAttribute1' (Type: 'readonly attribute' ExtAttr: 'CachedAttribute')
     1310    {"cachedAttribute1", TestObjInternal::cachedAttribute1AttrGetter, 0, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
     1311    // Attribute 'cachedAttribute2' (Type: 'readonly attribute' ExtAttr: 'CachedAttribute')
     1312    {"cachedAttribute2", TestObjInternal::cachedAttribute2AttrGetter, 0, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
    12801313    // Attribute 'description' (Type: 'readonly attribute' ExtAttr: '')
    12811314    {"description", TestObjInternal::descriptionAttrGetter, 0, 0 /* no data */, static_cast<v8::AccessControl>(v8::DEFAULT), static_cast<v8::PropertyAttribute>(v8::None), 0 /* on instance */},
  • trunk/Source/WebCore/bridge/c/CRuntimeObject.h

    r94875 r94929  
    5757    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    5858    {
    59         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     59        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    6060    }
    6161
  • trunk/Source/WebCore/bridge/c/c_instance.cpp

    r94599 r94929  
    124124    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    125125    {
    126         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     126        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    127127    }
    128128
  • trunk/Source/WebCore/bridge/jni/jsc/JavaInstanceJSC.cpp

    r94599 r94929  
    129129    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    130130    {
    131         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     131        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    132132    }
    133133
  • trunk/Source/WebCore/bridge/jni/jsc/JavaRuntimeObject.h

    r94875 r94929  
    5555    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    5656    {
    57         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     57        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    5858    }
    5959
  • trunk/Source/WebCore/bridge/objc/ObjCRuntimeObject.h

    r94875 r94929  
    5454    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    5555    {
    56         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     56        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    5757    }
    5858
  • trunk/Source/WebCore/bridge/objc/objc_instance.mm

    r94599 r94929  
    184184    static Structure* createStructure(JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSValue prototype)
    185185    {
    186         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     186        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    187187    }
    188188
  • trunk/Source/WebCore/bridge/objc/objc_runtime.h

    r94875 r94929  
    115115    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    116116    {
    117         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     117        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    118118    }
    119119
  • trunk/Source/WebCore/bridge/qt/qt_instance.cpp

    r94875 r94929  
    7171    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    7272    {
    73         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType,  StructureFlags), AnonymousSlotCount, &s_info);
     73        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType,  StructureFlags), &s_info);
    7474    }
    7575
  • trunk/Source/WebCore/bridge/qt/qt_pixmapruntime.cpp

    r94875 r94929  
    212212    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    213213    {
    214         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType,  StructureFlags), AnonymousSlotCount, &s_info);
     214        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType,  StructureFlags), &s_info);
    215215    }
    216216
  • trunk/Source/WebCore/bridge/qt/qt_runtime.h

    r94875 r94929  
    141141    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    142142    {
    143         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType,  StructureFlags), AnonymousSlotCount, &s_info);
     143        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType,  StructureFlags), &s_info);
    144144    }
    145145
  • trunk/Source/WebCore/bridge/runtime_array.h

    r94875 r94929  
    7373    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    7474    {
    75         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     75        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    7676    }
    7777
  • trunk/Source/WebCore/bridge/runtime_method.h

    r94875 r94929  
    5454    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    5555    {
    56         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     56        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    5757    }
    5858
  • trunk/Source/WebCore/bridge/runtime_object.h

    r94875 r94929  
    7171    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    7272    {
    73         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     73        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    7474    }
    7575
  • trunk/Source/WebKit/mac/ChangeLog

    r94908 r94929  
     12011-09-09  Oliver Hunt  <oliver@apple.com>
     2
     3        Remove support for anonymous storage from jsobjects
     4        https://bugs.webkit.org/show_bug.cgi?id=67881
     5
     6        Reviewed by Sam Weinig.
     7
     8        Remove the use of AnonymousSlotCount
     9
     10        * Plugins/Hosted/ProxyInstance.mm:
     11        (WebKit::ProxyRuntimeMethod::createStructure):
     12        * Plugins/Hosted/ProxyRuntimeObject.h:
     13        (WebKit::ProxyRuntimeObject::createStructure):
     14
    1152011-09-09  Chris Marrin  <cmarrin@apple.com>
    216
  • trunk/Source/WebKit/mac/Plugins/Hosted/ProxyInstance.mm

    r94599 r94929  
    192192    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    193193    {
    194         return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     194        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), &s_info);
    195195    }
    196196
  • trunk/Source/WebKit/mac/Plugins/Hosted/ProxyRuntimeObject.h

    r94875 r94929  
    5454    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    5555    {
    56         return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     56        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    5757    }
    5858
  • trunk/Source/WebKit2/ChangeLog

    r94908 r94929  
     12011-09-09  Oliver Hunt  <oliver@apple.com>
     2
     3        Remove support for anonymous storage from jsobjects
     4        https://bugs.webkit.org/show_bug.cgi?id=67881
     5
     6        Reviewed by Sam Weinig.
     7
     8        Remove the use of AnonymousSlotCount.
     9
     10        * WebProcess/Plugins/Netscape/JSNPMethod.h:
     11        (WebKit::JSNPMethod::createStructure):
     12        * WebProcess/Plugins/Netscape/JSNPObject.h:
     13        (WebKit::JSNPObject::createStructure):
     14
    1152011-09-09  Chris Marrin  <cmarrin@apple.com>
    216
  • trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPMethod.h

    r94875 r94929  
    5858    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    5959    {
    60         return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     60        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    6161    }
    6262
  • trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h

    r94875 r94929  
    7777    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    7878    {
    79         return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     79        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), &s_info);
    8080    }
    8181
Note: See TracChangeset for help on using the changeset viewer.