Changeset 94599 in webkit


Ignore:
Timestamp:
Sep 6, 2011 2:51:00 PM (13 years ago)
Author:
oliver@apple.com
Message:

An object's structure should reference the global object responsible for its creation
https://bugs.webkit.org/show_bug.cgi?id=67624

Reviewed by Gavin Barraclough.

Source/JavaScriptCore:

Add a reference to a GlobalObject to Structure, and update all calls to
Structure::create() to pass the global object that is the origin for that
structure. For objects where the appropriate global object isn't available
at construction time (global object prototypes, etc), or objects that
logically don't have a global object (strings, etc) we just pass null.

This change is largely mechanical (passing a new globalObject parameter
around).

  • API/JSCallbackConstructor.h:

(JSC::JSCallbackConstructor::createStructure):

  • API/JSCallbackFunction.h:

(JSC::JSCallbackFunction::createStructure):

  • API/JSCallbackObject.h:

(JSC::JSCallbackObject::createStructure):

  • API/JSContextRef.cpp:
  • JavaScriptCore.exp:
  • debugger/DebuggerActivation.h:

(JSC::DebuggerActivation::createStructure):

  • runtime/Arguments.h:

(JSC::Arguments::createStructure):

  • runtime/ArrayConstructor.h:

(JSC::ArrayConstructor::createStructure):

  • runtime/ArrayPrototype.h:

(JSC::ArrayPrototype::createStructure):

  • runtime/BooleanObject.h:

(JSC::BooleanObject::createStructure):

  • runtime/BooleanPrototype.h:

(JSC::BooleanPrototype::createStructure):

  • runtime/DateConstructor.h:

(JSC::DateConstructor::createStructure):

  • runtime/DateInstance.h:

(JSC::DateInstance::createStructure):

  • runtime/DatePrototype.h:

(JSC::DatePrototype::createStructure):

  • runtime/ErrorInstance.h:

(JSC::ErrorInstance::createStructure):

  • runtime/ErrorPrototype.h:

(JSC::ErrorPrototype::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/JSByteArray.h:
  • runtime/JSFunction.h:

(JSC::JSFunction::createStructure):

  • runtime/JSGlobalData.cpp:

(JSC::JSGlobalData::JSGlobalData):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::reset):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::finishCreation):
(JSC::JSGlobalObject::createStructure):

  • runtime/JSNotAnObject.h:

(JSC::JSNotAnObject::createStructure):

  • runtime/JSONObject.h:

(JSC::JSONObject::createStructure):

  • runtime/JSObject.cpp:

(JSC::JSObject::createInheritorID):

  • runtime/JSObject.h:

(JSC::JSObject::createStructure):
(JSC::JSNonFinalObject::createStructure):
(JSC::JSFinalObject::createStructure):
(JSC::createEmptyObjectStructure):

  • runtime/JSObjectWithGlobalObject.h:

(JSC::JSObjectWithGlobalObject::createStructure):

  • 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):
(JSC::NativeErrorConstructor::constructorBody):

  • runtime/NumberConstructor.h:

(JSC::NumberConstructor::createStructure):

  • runtime/NumberObject.h:

(JSC::NumberObject::createStructure):

  • runtime/NumberPrototype.h:

(JSC::NumberPrototype::createStructure):

  • runtime/ObjectConstructor.h:

(JSC::ObjectConstructor::createStructure):

  • 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::create):
(JSC::StringObjectThatMasqueradesAsUndefined::createStructure):

  • runtime/StringPrototype.h:

(JSC::StringPrototype::createStructure):

  • runtime/Structure.cpp:

(JSC::Structure::Structure):
(JSC::Structure::visitChildren):

  • runtime/Structure.h:

(JSC::Structure::create):
(JSC::Structure::globalObject):
(JSC::Structure::setGlobalObject):

  • runtime/StructureChain.h:

(JSC::StructureChain::createStructure):

Source/JavaScriptGlue:

Update for Structure::create() requiring a global object.

  • JSRun.h:

(JSGlueGlobalObject::create):

  • UserObjectImp.h:

(UserObjectImp::createStructure):

Source/WebCore:

Update calls to Structure::create() to pass the globalObject in,
and update the CodeGenerator to generate appropriate createStructure
methods.

  • bindings/js/JSAudioConstructor.h:

(WebCore::JSAudioConstructor::createStructure):

  • bindings/js/JSDOMBinding.h:

(WebCore::DOMConstructorObject::createStructure):
(WebCore::getDOMStructure):

  • bindings/js/JSDOMGlobalObject.h:

(WebCore::JSDOMGlobalObject::createStructure):
(WebCore::getDOMConstructor):

  • bindings/js/JSDOMWindowBase.h:

(WebCore::JSDOMWindowBase::createStructure):

  • bindings/js/JSDOMWindowShell.cpp:

(WebCore::JSDOMWindowShell::setWindow):

  • bindings/js/JSDOMWindowShell.h:

(WebCore::JSDOMWindowShell::createStructure):

  • bindings/js/JSDOMWrapper.h:

(WebCore::JSDOMWrapper::createStructure):

  • bindings/js/JSImageConstructor.h:

(WebCore::JSImageConstructor::createStructure):

  • bindings/js/JSImageDataCustom.cpp:

(WebCore::toJS):

  • bindings/js/JSOptionConstructor.h:

(WebCore::JSOptionConstructor::createStructure):

  • bindings/js/JSWorkerContextBase.h:

(WebCore::JSWorkerContextBase::createStructure):

  • bindings/js/WorkerScriptController.cpp:

(WebCore::WorkerScriptController::initScript):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
(GenerateImplementation):
(GenerateConstructorDeclaration):

  • 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:

Update for new Structure::create() globalObject parameter.

  • Plugins/Hosted/ProxyInstance.mm:

(WebKit::ProxyRuntimeMethod::createStructure):

  • Plugins/Hosted/ProxyRuntimeObject.h:

(WebKit::ProxyRuntimeObject::createStructure):

Source/WebKit2:

Update for new Structure::create globalObject parameter.

  • WebProcess/Plugins/Netscape/JSNPMethod.cpp:

(WebKit::JSNPMethod::create):

  • WebProcess/Plugins/Netscape/JSNPMethod.h:

(WebKit::JSNPMethod::createStructure):

  • WebProcess/Plugins/Netscape/JSNPObject.cpp:

(WebKit::JSNPObject::create):

  • WebProcess/Plugins/Netscape/JSNPObject.h:

(WebKit::JSNPObject::createStructure):

Location:
trunk/Source
Files:
100 edited

Legend:

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

    r94364 r94599  
    4646    static const ClassInfo s_info;
    4747
    48     static Structure* createStructure(JSGlobalData& globalData, JSValue proto)
     48    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    4949    {
    50         return Structure::create(globalData, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     50        return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    5151    }
    5252
  • trunk/Source/JavaScriptCore/API/JSCallbackFunction.h

    r92706 r94599  
    4848    // InternalFunction mish-mashes constructor and function behavior -- we should
    4949    // refactor the code so this override isn't necessary
    50     static Structure* createStructure(JSGlobalData& globalData, JSValue proto)
     50    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    5151    {
    52         return Structure::create(globalData, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     52        return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    5353    }
    5454
  • trunk/Source/JavaScriptCore/API/JSCallbackObject.h

    r94364 r94599  
    150150    bool inherits(JSClassRef) const;
    151151
    152     static Structure* createStructure(JSGlobalData& globalData, JSValue proto)
     152    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    153153    {
    154         return Structure::create(globalData, proto, TypeInfo(ObjectType, StructureFlags), Parent::AnonymousSlotCount, &s_info);
     154        return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), Parent::AnonymousSlotCount, &s_info);
    155155    }
    156156   
  • trunk/Source/JavaScriptCore/API/JSContextRef.cpp

    r91903 r94599  
    102102    }
    103103
    104     JSGlobalObject* globalObject = JSCallbackObject<JSGlobalObject>::create(*globalData, globalObjectClass, JSCallbackObject<JSGlobalObject>::createStructure(*globalData, jsNull()));
     104    JSGlobalObject* globalObject = JSCallbackObject<JSGlobalObject>::create(*globalData, globalObjectClass, JSCallbackObject<JSGlobalObject>::createStructure(*globalData, 0, jsNull()));
    105105    ExecState* exec = globalObject->globalExec();
    106106    JSValue prototype = globalObjectClass->prototype(exec);
  • trunk/Source/JavaScriptCore/ChangeLog

    r94575 r94599  
     12011-09-05  Oliver Hunt  <oliver@apple.com>
     2
     3        An object's structure should reference the global object responsible for its creation
     4        https://bugs.webkit.org/show_bug.cgi?id=67624
     5
     6        Reviewed by Gavin Barraclough.
     7
     8        Add a reference to a GlobalObject to Structure, and update all calls to
     9        Structure::create() to pass the global object that is the origin for that
     10        structure.  For objects where the appropriate global object isn't available
     11        at construction time (global object prototypes, etc), or objects that
     12        logically don't have a global object (strings, etc) we just pass null.
     13
     14        This change is largely mechanical (passing a new globalObject parameter
     15        around).
     16
     17        * API/JSCallbackConstructor.h:
     18        (JSC::JSCallbackConstructor::createStructure):
     19        * API/JSCallbackFunction.h:
     20        (JSC::JSCallbackFunction::createStructure):
     21        * API/JSCallbackObject.h:
     22        (JSC::JSCallbackObject::createStructure):
     23        * API/JSContextRef.cpp:
     24        * JavaScriptCore.exp:
     25        * debugger/DebuggerActivation.h:
     26        (JSC::DebuggerActivation::createStructure):
     27        * runtime/Arguments.h:
     28        (JSC::Arguments::createStructure):
     29        * runtime/ArrayConstructor.h:
     30        (JSC::ArrayConstructor::createStructure):
     31        * runtime/ArrayPrototype.h:
     32        (JSC::ArrayPrototype::createStructure):
     33        * runtime/BooleanObject.h:
     34        (JSC::BooleanObject::createStructure):
     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.h:
     42        (JSC::DatePrototype::createStructure):
     43        * runtime/ErrorInstance.h:
     44        (JSC::ErrorInstance::createStructure):
     45        * runtime/ErrorPrototype.h:
     46        (JSC::ErrorPrototype::createStructure):
     47        * runtime/Executable.h:
     48        (JSC::ExecutableBase::createStructure):
     49        (JSC::NativeExecutable::createStructure):
     50        (JSC::EvalExecutable::createStructure):
     51        (JSC::ProgramExecutable::createStructure):
     52        (JSC::FunctionExecutable::createStructure):
     53        * runtime/FunctionPrototype.h:
     54        (JSC::FunctionPrototype::createStructure):
     55        * runtime/GetterSetter.h:
     56        (JSC::GetterSetter::createStructure):
     57        * runtime/InternalFunction.h:
     58        (JSC::InternalFunction::createStructure):
     59        * runtime/JSAPIValueWrapper.h:
     60        (JSC::JSAPIValueWrapper::createStructure):
     61        * runtime/JSActivation.h:
     62        (JSC::JSActivation::createStructure):
     63        * runtime/JSArray.h:
     64        (JSC::JSArray::createStructure):
     65        * runtime/JSByteArray.cpp:
     66        (JSC::JSByteArray::createStructure):
     67        * runtime/JSByteArray.h:
     68        * runtime/JSFunction.h:
     69        (JSC::JSFunction::createStructure):
     70        * runtime/JSGlobalData.cpp:
     71        (JSC::JSGlobalData::JSGlobalData):
     72        * runtime/JSGlobalObject.cpp:
     73        (JSC::JSGlobalObject::reset):
     74        * runtime/JSGlobalObject.h:
     75        (JSC::JSGlobalObject::finishCreation):
     76        (JSC::JSGlobalObject::createStructure):
     77        * runtime/JSNotAnObject.h:
     78        (JSC::JSNotAnObject::createStructure):
     79        * runtime/JSONObject.h:
     80        (JSC::JSONObject::createStructure):
     81        * runtime/JSObject.cpp:
     82        (JSC::JSObject::createInheritorID):
     83        * runtime/JSObject.h:
     84        (JSC::JSObject::createStructure):
     85        (JSC::JSNonFinalObject::createStructure):
     86        (JSC::JSFinalObject::createStructure):
     87        (JSC::createEmptyObjectStructure):
     88        * runtime/JSObjectWithGlobalObject.h:
     89        (JSC::JSObjectWithGlobalObject::createStructure):
     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        (JSC::NativeErrorConstructor::constructorBody):
     105        * runtime/NumberConstructor.h:
     106        (JSC::NumberConstructor::createStructure):
     107        * runtime/NumberObject.h:
     108        (JSC::NumberObject::createStructure):
     109        * runtime/NumberPrototype.h:
     110        (JSC::NumberPrototype::createStructure):
     111        * runtime/ObjectConstructor.h:
     112        (JSC::ObjectConstructor::createStructure):
     113        * runtime/ObjectPrototype.h:
     114        (JSC::ObjectPrototype::createStructure):
     115        * runtime/RegExp.h:
     116        (JSC::RegExp::createStructure):
     117        * runtime/RegExpConstructor.h:
     118        (JSC::RegExpConstructor::createStructure):
     119        * runtime/RegExpObject.h:
     120        (JSC::RegExpObject::createStructure):
     121        * runtime/RegExpPrototype.h:
     122        (JSC::RegExpPrototype::createStructure):
     123        * runtime/ScopeChain.h:
     124        (JSC::ScopeChainNode::createStructure):
     125        * runtime/StrictEvalActivation.h:
     126        (JSC::StrictEvalActivation::createStructure):
     127        * runtime/StringConstructor.h:
     128        (JSC::StringConstructor::createStructure):
     129        * runtime/StringObject.h:
     130        (JSC::StringObject::createStructure):
     131        * runtime/StringObjectThatMasqueradesAsUndefined.h:
     132        (JSC::StringObjectThatMasqueradesAsUndefined::create):
     133        (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
     134        * runtime/StringPrototype.h:
     135        (JSC::StringPrototype::createStructure):
     136        * runtime/Structure.cpp:
     137        (JSC::Structure::Structure):
     138        (JSC::Structure::visitChildren):
     139        * runtime/Structure.h:
     140        (JSC::Structure::create):
     141        (JSC::Structure::globalObject):
     142        (JSC::Structure::setGlobalObject):
     143        * runtime/StructureChain.h:
     144        (JSC::StructureChain::createStructure):
     145
    11462011-09-06  Michael Saboff  <msaboff@apple.com>
    2147
  • trunk/Source/JavaScriptCore/JavaScriptCore.exp

    r94522 r94599  
    118118__ZN3JSC10throwErrorEPNS_9ExecStateEPNS_8JSObjectE
    119119__ZN3JSC11JSByteArray13s_defaultInfoE
    120 __ZN3JSC11JSByteArray15createStructureERNS_12JSGlobalDataENS_7JSValueEPKNS_9ClassInfoE
     120__ZN3JSC11JSByteArray15createStructureERNS_12JSGlobalDataEPNS_14JSGlobalObjectENS_7JSValueEPKNS_9ClassInfoE
    121121__ZN3JSC11JSByteArrayC1EPNS_9ExecStateEPNS_9StructureEPN3WTF9ByteArrayE
    122122__ZN3JSC11ParserArena5resetEv
  • trunk/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def

    r94575 r94599  
    115115    ?createSingleCharacterString@SmallStrings@JSC@@AAEXPAVJSGlobalData@2@E@Z
    116116    ?createStackOverflowError@JSC@@YAPAVJSObject@1@PAVExecState@1@@Z
    117     ?createStructure@JSByteArray@JSC@@SAPAVStructure@2@AAVJSGlobalData@2@VJSValue@2@PBUClassInfo@2@@Z
     117    ?createStructure@JSByteArray@JSC@@SAPAVStructure@2@AAVJSGlobalData@2@PAVJSGlobalObject@2@VJSValue@2@PBUClassInfo@2@@Z
    118118    ?createSyntaxError@JSC@@YAPAVJSObject@1@PAVExecState@1@ABVUString@1@@Z
    119119    ?createTable@HashTable@JSC@@ABEXPAVJSGlobalData@2@@Z
  • trunk/Source/JavaScriptCore/debugger/DebuggerActivation.h

    r94364 r94599  
    4949        virtual JSValue lookupSetter(ExecState*, const Identifier& propertyName);
    5050
    51         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     51        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    5252        {
    53             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     53            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    5454        }
    5555
  • trunk/Source/JavaScriptCore/runtime/Arguments.h

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

    r92706 r94599  
    3939        static const ClassInfo s_info;
    4040
    41         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     41        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4242        {
    43             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     43            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4444        }
    4545
  • trunk/Source/JavaScriptCore/runtime/ArrayPrototype.h

    r94364 r94599  
    4444        static const ClassInfo s_info;
    4545
    46         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     46        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4747        {
    48             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     48            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4949        }
    5050
  • trunk/Source/JavaScriptCore/runtime/BooleanObject.h

    r94364 r94599  
    4141        static const ClassInfo s_info;
    4242       
    43         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     43        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4444        {
    45             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     45            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4646        }
    4747    };
  • trunk/Source/JavaScriptCore/runtime/BooleanPrototype.h

    r92706 r94599  
    3737        static const ClassInfo s_info;
    3838
    39         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     39        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4040        {
    41             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     41            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4242        }
    4343
  • trunk/Source/JavaScriptCore/runtime/DateConstructor.h

    r92706 r94599  
    3939        static const ClassInfo s_info;
    4040
    41         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     41        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4242        {
    43             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     43            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4444        }
    4545
  • trunk/Source/JavaScriptCore/runtime/DateInstance.h

    r94364 r94599  
    6767        }
    6868
    69         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     69        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    7070        {
    71             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     71            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    7272        }
    7373
  • trunk/Source/JavaScriptCore/runtime/DatePrototype.h

    r92706 r94599  
    4444        static const ClassInfo s_info;
    4545
    46         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     46        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4747        {
    48             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     48            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4949        }
    5050
  • trunk/Source/JavaScriptCore/runtime/ErrorInstance.h

    r94364 r94599  
    3232        static const ClassInfo s_info;
    3333
    34         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     34        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    3535        {
    36             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     36            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    3737        }
    3838
  • trunk/Source/JavaScriptCore/runtime/ErrorPrototype.h

    r94364 r94599  
    3939        static const ClassInfo s_info;
    4040
    41         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     41        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4242        {
    43             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     43            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4444        }
    4545
  • trunk/Source/JavaScriptCore/runtime/Executable.h

    r94559 r94599  
    8484        }
    8585
    86         static Structure* createStructure(JSGlobalData& globalData, JSValue proto) { return Structure::create(globalData, 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), AnonymousSlotCount, &s_info); }
    8787       
    8888        static const ClassInfo s_info;
     
    199199        NativeFunction function() { return m_function; }
    200200
    201         static Structure* createStructure(JSGlobalData& globalData, JSValue proto) { return Structure::create(globalData, 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), AnonymousSlotCount, &s_info); }
    202202       
    203203        static const ClassInfo s_info;
     
    333333        }
    334334#endif
    335         static Structure* createStructure(JSGlobalData& globalData, JSValue proto)
    336         {
    337             return Structure::create(globalData, proto, TypeInfo(CompoundType, StructureFlags), AnonymousSlotCount, &s_info);
     335        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
     336        {
     337            return Structure::create(globalData, globalObject, proto, TypeInfo(CompoundType, StructureFlags), AnonymousSlotCount, &s_info);
    338338        }
    339339       
     
    394394#endif
    395395       
    396         static Structure* createStructure(JSGlobalData& globalData, JSValue proto)
    397         {
    398             return Structure::create(globalData, proto, TypeInfo(CompoundType, StructureFlags), AnonymousSlotCount, &s_info);
     396        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
     397        {
     398            return Structure::create(globalData, globalObject, proto, TypeInfo(CompoundType, StructureFlags), AnonymousSlotCount, &s_info);
    399399        }
    400400       
     
    550550        void visitChildren(SlotVisitor&);
    551551        static FunctionExecutable* fromGlobalCode(const Identifier&, ExecState*, Debugger*, const SourceCode&, JSObject** exception);
    552         static Structure* createStructure(JSGlobalData& globalData, JSValue proto)
    553         {
    554             return Structure::create(globalData, proto, TypeInfo(CompoundType, StructureFlags), AnonymousSlotCount, &s_info);
     552        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
     553        {
     554            return Structure::create(globalData, globalObject, proto, TypeInfo(CompoundType, StructureFlags), AnonymousSlotCount, &s_info);
    555555        }
    556556       
  • trunk/Source/JavaScriptCore/runtime/FunctionPrototype.h

    r92706 r94599  
    3737        void addFunctionProperties(ExecState*, JSGlobalObject*, Structure* functionStructure, JSFunction** callFunction, JSFunction** applyFunction);
    3838       
    39         static Structure* createStructure(JSGlobalData& globalData, JSValue proto)
     39        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    4040        {
    41             return Structure::create(globalData, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     41            return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4242        }
    4343
  • trunk/Source/JavaScriptCore/runtime/GetterSetter.h

    r93920 r94599  
    6060        JSObject* setter() const { return m_setter.get(); }
    6161        void setSetter(JSGlobalData& globalData, JSObject* setter) { m_setter.set(globalData, this, setter); }
    62         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     62        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    6363        {
    64             return Structure::create(globalData, prototype, TypeInfo(GetterSetterType, OverridesVisitChildren), AnonymousSlotCount, &s_info);
     64            return Structure::create(globalData, globalObject, prototype, TypeInfo(GetterSetterType, OverridesVisitChildren), AnonymousSlotCount, &s_info);
    6565        }
    6666       
  • trunk/Source/JavaScriptCore/runtime/InternalFunction.h

    r94364 r94599  
    4242        const UString calculatedDisplayName(ExecState*);
    4343
    44         static Structure* createStructure(JSGlobalData& globalData, JSValue proto)
     44        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    4545        {
    46             return Structure::create(globalData, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     46            return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4747        }
    4848
  • trunk/Source/JavaScriptCore/runtime/JSAPIValueWrapper.h

    r93920 r94599  
    4040        virtual bool isAPIValueWrapper() const { return true; }
    4141
    42         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     42        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4343        {
    44             return Structure::create(globalData, prototype, TypeInfo(CompoundType, OverridesVisitChildren | OverridesGetPropertyNames), AnonymousSlotCount, &s_info);
     44            return Structure::create(globalData, globalObject, prototype, TypeInfo(CompoundType, OverridesVisitChildren | OverridesGetPropertyNames), AnonymousSlotCount, &s_info);
    4545        }
    4646       
  • trunk/Source/JavaScriptCore/runtime/JSActivation.h

    r94364 r94599  
    7575        static const ClassInfo s_info;
    7676
    77         static Structure* createStructure(JSGlobalData& globalData, JSValue proto) { return Structure::create(globalData, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info); }
     77        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info); }
    7878
    7979    protected:
  • trunk/Source/JavaScriptCore/runtime/JSArray.h

    r94364 r94599  
    150150        void copyToRegisters(ExecState*, Register*, uint32_t);
    151151
    152         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
    153         {
    154             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     152        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
     153        {
     154            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    155155        }
    156156       
  • trunk/Source/JavaScriptCore/runtime/JSByteArray.cpp

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

    r94364 r94599  
    8787        }
    8888
    89         static Structure* createStructure(JSGlobalData&, JSValue prototype, const JSC::ClassInfo* = &s_defaultInfo);
     89        static Structure* createStructure(JSGlobalData&, JSGlobalObject*, JSValue prototype, const JSC::ClassInfo* = &s_defaultInfo);
    9090
    9191        virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot&);
  • trunk/Source/JavaScriptCore/runtime/JSFunction.h

    r94364 r94599  
    110110        static JS_EXPORTDATA const ClassInfo s_info;
    111111
    112         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     112        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    113113        {
    114             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     114            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    115115        }
    116116
  • trunk/Source/JavaScriptCore/runtime/JSGlobalData.cpp

    r93755 r94599  
    215215    JSLock lock(SilenceAssertionsOnly);
    216216    structureStructure.set(*this, Structure::createStructure(*this));
    217     debuggerActivationStructure.set(*this, DebuggerActivation::createStructure(*this, jsNull()));
    218     activationStructure.set(*this, JSActivation::createStructure(*this, jsNull()));
    219     interruptedExecutionErrorStructure.set(*this, JSNonFinalObject::createStructure(*this, jsNull()));
    220     terminatedExecutionErrorStructure.set(*this, JSNonFinalObject::createStructure(*this, jsNull()));
    221     staticScopeStructure.set(*this, JSStaticScopeObject::createStructure(*this, jsNull()));
    222     strictEvalActivationStructure.set(*this, StrictEvalActivation::createStructure(*this, jsNull()));
    223     stringStructure.set(*this, JSString::createStructure(*this, jsNull()));
    224     notAnObjectStructure.set(*this, JSNotAnObject::createStructure(*this, jsNull()));
    225     propertyNameIteratorStructure.set(*this, JSPropertyNameIterator::createStructure(*this, jsNull()));
    226     getterSetterStructure.set(*this, GetterSetter::createStructure(*this, jsNull()));
    227     apiWrapperStructure.set(*this, JSAPIValueWrapper::createStructure(*this, jsNull()));
    228     scopeChainNodeStructure.set(*this, ScopeChainNode::createStructure(*this, jsNull()));
    229     executableStructure.set(*this, ExecutableBase::createStructure(*this, jsNull()));
    230     nativeExecutableStructure.set(*this, NativeExecutable::createStructure(*this, jsNull()));
    231     evalExecutableStructure.set(*this, EvalExecutable::createStructure(*this, jsNull()));
    232     programExecutableStructure.set(*this, ProgramExecutable::createStructure(*this, jsNull()));
    233     functionExecutableStructure.set(*this, FunctionExecutable::createStructure(*this, jsNull()));
    234     regExpStructure.set(*this, RegExp::createStructure(*this, jsNull()));
    235     structureChainStructure.set(*this, StructureChain::createStructure(*this, jsNull()));
     217    debuggerActivationStructure.set(*this, DebuggerActivation::createStructure(*this, 0, jsNull()));
     218    activationStructure.set(*this, JSActivation::createStructure(*this, 0, jsNull()));
     219    interruptedExecutionErrorStructure.set(*this, JSNonFinalObject::createStructure(*this, 0, jsNull()));
     220    terminatedExecutionErrorStructure.set(*this, JSNonFinalObject::createStructure(*this, 0, jsNull()));
     221    staticScopeStructure.set(*this, JSStaticScopeObject::createStructure(*this, 0, jsNull()));
     222    strictEvalActivationStructure.set(*this, StrictEvalActivation::createStructure(*this, 0, jsNull()));
     223    stringStructure.set(*this, JSString::createStructure(*this, 0, jsNull()));
     224    notAnObjectStructure.set(*this, JSNotAnObject::createStructure(*this, 0, jsNull()));
     225    propertyNameIteratorStructure.set(*this, JSPropertyNameIterator::createStructure(*this, 0, jsNull()));
     226    getterSetterStructure.set(*this, GetterSetter::createStructure(*this, 0, jsNull()));
     227    apiWrapperStructure.set(*this, JSAPIValueWrapper::createStructure(*this, 0, jsNull()));
     228    scopeChainNodeStructure.set(*this, ScopeChainNode::createStructure(*this, 0, jsNull()));
     229    executableStructure.set(*this, ExecutableBase::createStructure(*this, 0, jsNull()));
     230    nativeExecutableStructure.set(*this, NativeExecutable::createStructure(*this, 0, jsNull()));
     231    evalExecutableStructure.set(*this, EvalExecutable::createStructure(*this, 0, jsNull()));
     232    programExecutableStructure.set(*this, ProgramExecutable::createStructure(*this, 0, jsNull()));
     233    functionExecutableStructure.set(*this, FunctionExecutable::createStructure(*this, 0, jsNull()));
     234    regExpStructure.set(*this, RegExp::createStructure(*this, 0, jsNull()));
     235    structureChainStructure.set(*this, StructureChain::createStructure(*this, 0, jsNull()));
    236236
    237237    wtfThreadData().setCurrentIdentifierTable(existingEntryIdentifierTable);
  • trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp

    r92788 r94599  
    186186    ExecState* exec = JSGlobalObject::globalExec();
    187187
    188     m_functionPrototype.set(exec->globalData(), this, FunctionPrototype::create(exec, this, FunctionPrototype::createStructure(exec->globalData(), jsNull()))); // The real prototype will be set once ObjectPrototype is created.
    189     m_functionStructure.set(exec->globalData(), this, JSFunction::createStructure(exec->globalData(), m_functionPrototype.get()));
     188    m_functionPrototype.set(exec->globalData(), this, FunctionPrototype::create(exec, this, FunctionPrototype::createStructure(exec->globalData(), this, jsNull()))); // The real prototype will be set once ObjectPrototype is created.
     189    m_functionStructure.set(exec->globalData(), this, JSFunction::createStructure(exec->globalData(), this, m_functionPrototype.get()));
    190190    m_namedFunctionStructure.set(exec->globalData(), this, Structure::addPropertyTransition(exec->globalData(), m_functionStructure.get(), exec->globalData().propertyNames->name, DontDelete | ReadOnly | DontEnum, 0, m_functionNameOffset));
    191     m_internalFunctionStructure.set(exec->globalData(), this, InternalFunction::createStructure(exec->globalData(), m_functionPrototype.get()));
     191    m_internalFunctionStructure.set(exec->globalData(), this, InternalFunction::createStructure(exec->globalData(), this, m_functionPrototype.get()));
    192192    JSFunction* callFunction = 0;
    193193    JSFunction* applyFunction = 0;
     
    195195    m_callFunction.set(exec->globalData(), this, callFunction);
    196196    m_applyFunction.set(exec->globalData(), this, applyFunction);
    197     m_objectPrototype.set(exec->globalData(), this, ObjectPrototype::create(exec, this, ObjectPrototype::createStructure(exec->globalData(), jsNull())));
     197    m_objectPrototype.set(exec->globalData(), this, ObjectPrototype::create(exec, this, ObjectPrototype::createStructure(exec->globalData(), this, jsNull())));
    198198    m_functionPrototype->structure()->setPrototypeWithoutTransition(exec->globalData(), m_objectPrototype.get());
    199199
    200200    m_emptyObjectStructure.set(exec->globalData(), this, m_objectPrototype->inheritorID(exec->globalData()));
    201     m_nullPrototypeObjectStructure.set(exec->globalData(), this, createEmptyObjectStructure(exec->globalData(), jsNull()));
    202 
    203     m_callbackFunctionStructure.set(exec->globalData(), this, JSCallbackFunction::createStructure(exec->globalData(), m_functionPrototype.get()));
    204     m_argumentsStructure.set(exec->globalData(), this, Arguments::createStructure(exec->globalData(), m_objectPrototype.get()));
    205     m_callbackConstructorStructure.set(exec->globalData(), this, JSCallbackConstructor::createStructure(exec->globalData(), m_objectPrototype.get()));
    206     m_callbackObjectStructure.set(exec->globalData(), this, JSCallbackObject<JSObjectWithGlobalObject>::createStructure(exec->globalData(), m_objectPrototype.get()));
    207 
    208     m_arrayPrototype.set(exec->globalData(), this, ArrayPrototype::create(exec, this, ArrayPrototype::createStructure(exec->globalData(), m_objectPrototype.get())));
    209     m_arrayStructure.set(exec->globalData(), this, JSArray::createStructure(exec->globalData(), m_arrayPrototype.get()));
    210     m_regExpMatchesArrayStructure.set(exec->globalData(), this, RegExpMatchesArray::createStructure(exec->globalData(), m_arrayPrototype.get()));
    211 
    212     m_stringPrototype.set(exec->globalData(), this, StringPrototype::create(exec, this, StringPrototype::createStructure(exec->globalData(), m_objectPrototype.get())));
    213     m_stringObjectStructure.set(exec->globalData(), this, StringObject::createStructure(exec->globalData(), m_stringPrototype.get()));
    214 
    215     m_booleanPrototype.set(exec->globalData(), this, BooleanPrototype::create(exec, this, BooleanPrototype::createStructure(exec->globalData(), m_objectPrototype.get())));
    216     m_booleanObjectStructure.set(exec->globalData(), this, BooleanObject::createStructure(exec->globalData(), m_booleanPrototype.get()));
    217 
    218     m_numberPrototype.set(exec->globalData(), this, NumberPrototype::create(exec, this, NumberPrototype::createStructure(exec->globalData(), m_objectPrototype.get())));
    219     m_numberObjectStructure.set(exec->globalData(), this, NumberObject::createStructure(exec->globalData(), m_numberPrototype.get()));
    220 
    221     m_datePrototype.set(exec->globalData(), this, DatePrototype::create(exec, this, DatePrototype::createStructure(exec->globalData(), m_objectPrototype.get())));
    222     m_dateStructure.set(exec->globalData(), this, DateInstance::createStructure(exec->globalData(), m_datePrototype.get()));
     201    m_nullPrototypeObjectStructure.set(exec->globalData(), this, createEmptyObjectStructure(exec->globalData(), this, jsNull()));
     202
     203    m_callbackFunctionStructure.set(exec->globalData(), this, JSCallbackFunction::createStructure(exec->globalData(), this, m_functionPrototype.get()));
     204    m_argumentsStructure.set(exec->globalData(), this, Arguments::createStructure(exec->globalData(), this, m_objectPrototype.get()));
     205    m_callbackConstructorStructure.set(exec->globalData(), this, JSCallbackConstructor::createStructure(exec->globalData(), this, m_objectPrototype.get()));
     206    m_callbackObjectStructure.set(exec->globalData(), this, JSCallbackObject<JSObjectWithGlobalObject>::createStructure(exec->globalData(), this, m_objectPrototype.get()));
     207
     208    m_arrayPrototype.set(exec->globalData(), this, ArrayPrototype::create(exec, this, ArrayPrototype::createStructure(exec->globalData(), this, m_objectPrototype.get())));
     209    m_arrayStructure.set(exec->globalData(), this, JSArray::createStructure(exec->globalData(), this, m_arrayPrototype.get()));
     210    m_regExpMatchesArrayStructure.set(exec->globalData(), this, RegExpMatchesArray::createStructure(exec->globalData(), this, m_arrayPrototype.get()));
     211
     212    m_stringPrototype.set(exec->globalData(), this, StringPrototype::create(exec, this, StringPrototype::createStructure(exec->globalData(), this, m_objectPrototype.get())));
     213    m_stringObjectStructure.set(exec->globalData(), this, StringObject::createStructure(exec->globalData(), this, m_stringPrototype.get()));
     214
     215    m_booleanPrototype.set(exec->globalData(), this, BooleanPrototype::create(exec, this, BooleanPrototype::createStructure(exec->globalData(), this, m_objectPrototype.get())));
     216    m_booleanObjectStructure.set(exec->globalData(), this, BooleanObject::createStructure(exec->globalData(), this, m_booleanPrototype.get()));
     217
     218    m_numberPrototype.set(exec->globalData(), this, NumberPrototype::create(exec, this, NumberPrototype::createStructure(exec->globalData(), this, m_objectPrototype.get())));
     219    m_numberObjectStructure.set(exec->globalData(), this, NumberObject::createStructure(exec->globalData(), this, m_numberPrototype.get()));
     220
     221    m_datePrototype.set(exec->globalData(), this, DatePrototype::create(exec, this, DatePrototype::createStructure(exec->globalData(), this, m_objectPrototype.get())));
     222    m_dateStructure.set(exec->globalData(), this, DateInstance::createStructure(exec->globalData(), this, m_datePrototype.get()));
    223223
    224224    RegExp* emptyRegex = RegExp::create(exec->globalData(), "", NoFlags);
    225225   
    226     m_regExpPrototype.set(exec->globalData(), this, RegExpPrototype::create(exec, this, RegExpPrototype::createStructure(exec->globalData(), m_objectPrototype.get()), emptyRegex));
    227     m_regExpStructure.set(exec->globalData(), this, RegExpObject::createStructure(exec->globalData(), m_regExpPrototype.get()));
     226    m_regExpPrototype.set(exec->globalData(), this, RegExpPrototype::create(exec, this, RegExpPrototype::createStructure(exec->globalData(), this, m_objectPrototype.get()), emptyRegex));
     227    m_regExpStructure.set(exec->globalData(), this, RegExpObject::createStructure(exec->globalData(), this, m_regExpPrototype.get()));
    228228
    229229    m_methodCallDummy.set(exec->globalData(), this, constructEmptyObject(exec));
    230230
    231     ErrorPrototype* errorPrototype = ErrorPrototype::create(exec, this, ErrorPrototype::createStructure(exec->globalData(), m_objectPrototype.get()));
    232     m_errorStructure.set(exec->globalData(), this, ErrorInstance::createStructure(exec->globalData(), errorPrototype));
     231    ErrorPrototype* errorPrototype = ErrorPrototype::create(exec, this, ErrorPrototype::createStructure(exec->globalData(), this, m_objectPrototype.get()));
     232    m_errorStructure.set(exec->globalData(), this, ErrorInstance::createStructure(exec->globalData(), this, errorPrototype));
    233233
    234234    // Constructors
    235235
    236     JSCell* objectConstructor = ObjectConstructor::create(exec, this, ObjectConstructor::createStructure(exec->globalData(), m_functionPrototype.get()), m_objectPrototype.get());
    237     JSCell* functionConstructor = FunctionConstructor::create(exec, this, FunctionConstructor::createStructure(exec->globalData(), m_functionPrototype.get()), m_functionPrototype.get());
    238     JSCell* arrayConstructor = ArrayConstructor::create(exec, this, ArrayConstructor::createStructure(exec->globalData(), m_functionPrototype.get()), m_arrayPrototype.get());
    239     JSCell* stringConstructor = StringConstructor::create(exec, this, StringConstructor::createStructure(exec->globalData(), m_functionPrototype.get()), m_stringPrototype.get());
    240     JSCell* booleanConstructor = BooleanConstructor::create(exec, this, BooleanConstructor::createStructure(exec->globalData(), m_functionPrototype.get()), m_booleanPrototype.get());
    241     JSCell* numberConstructor = NumberConstructor::create(exec, this, NumberConstructor::createStructure(exec->globalData(), m_functionPrototype.get()), m_numberPrototype.get());
    242     JSCell* dateConstructor = DateConstructor::create(exec, this, DateConstructor::createStructure(exec->globalData(), m_functionPrototype.get()), m_datePrototype.get());
    243 
    244     m_regExpConstructor.set(exec->globalData(), this, RegExpConstructor::create(exec, this, RegExpConstructor::createStructure(exec->globalData(), m_functionPrototype.get()), m_regExpPrototype.get()));
    245 
    246     m_errorConstructor.set(exec->globalData(), this, ErrorConstructor::create(exec, this, ErrorConstructor::createStructure(exec->globalData(), m_functionPrototype.get()), errorPrototype));
    247 
    248     Structure* nativeErrorPrototypeStructure = NativeErrorPrototype::createStructure(exec->globalData(), errorPrototype);
    249     Structure* nativeErrorStructure = NativeErrorConstructor::createStructure(exec->globalData(), m_functionPrototype.get());
     236    JSCell* objectConstructor = ObjectConstructor::create(exec, this, ObjectConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_objectPrototype.get());
     237    JSCell* functionConstructor = FunctionConstructor::create(exec, this, FunctionConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_functionPrototype.get());
     238    JSCell* arrayConstructor = ArrayConstructor::create(exec, this, ArrayConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_arrayPrototype.get());
     239    JSCell* stringConstructor = StringConstructor::create(exec, this, StringConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_stringPrototype.get());
     240    JSCell* booleanConstructor = BooleanConstructor::create(exec, this, BooleanConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_booleanPrototype.get());
     241    JSCell* numberConstructor = NumberConstructor::create(exec, this, NumberConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_numberPrototype.get());
     242    JSCell* dateConstructor = DateConstructor::create(exec, this, DateConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_datePrototype.get());
     243
     244    m_regExpConstructor.set(exec->globalData(), this, RegExpConstructor::create(exec, this, RegExpConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), m_regExpPrototype.get()));
     245
     246    m_errorConstructor.set(exec->globalData(), this, ErrorConstructor::create(exec, this, ErrorConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get()), errorPrototype));
     247
     248    Structure* nativeErrorPrototypeStructure = NativeErrorPrototype::createStructure(exec->globalData(), this, errorPrototype);
     249    Structure* nativeErrorStructure = NativeErrorConstructor::createStructure(exec->globalData(), this, m_functionPrototype.get());
    250250    m_evalErrorConstructor.set(exec->globalData(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, "EvalError"));
    251251    m_rangeErrorConstructor.set(exec->globalData(), this, NativeErrorConstructor::create(exec, this, nativeErrorStructure, nativeErrorPrototypeStructure, "RangeError"));
     
    285285
    286286    GlobalPropertyInfo staticGlobals[] = {
    287         GlobalPropertyInfo(Identifier(exec, "Math"), MathObject::create(exec, this, MathObject::createStructure(exec->globalData(), m_objectPrototype.get())), DontEnum | DontDelete),
     287        GlobalPropertyInfo(Identifier(exec, "Math"), MathObject::create(exec, this, MathObject::createStructure(exec->globalData(), this, m_objectPrototype.get())), DontEnum | DontDelete),
    288288        GlobalPropertyInfo(Identifier(exec, "NaN"), jsNaN(), DontEnum | DontDelete | ReadOnly),
    289289        GlobalPropertyInfo(Identifier(exec, "Infinity"), jsNumber(std::numeric_limits<double>::infinity()), DontEnum | DontDelete | ReadOnly),
    290290        GlobalPropertyInfo(Identifier(exec, "undefined"), jsUndefined(), DontEnum | DontDelete | ReadOnly),
    291         GlobalPropertyInfo(Identifier(exec, "JSON"), JSONObject::create(exec, this, JSONObject::createStructure(exec->globalData(), m_objectPrototype.get())), DontEnum | DontDelete)
     291        GlobalPropertyInfo(Identifier(exec, "JSON"), JSONObject::create(exec, this, JSONObject::createStructure(exec->globalData(), this, m_objectPrototype.get())), DontEnum | DontDelete)
    292292    };
    293293    addStaticGlobals(staticGlobals, WTF_ARRAY_LENGTH(staticGlobals));
  • trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h

    r94364 r94599  
    176176        {
    177177            Base::finishCreation(globalData);
     178            structure()->setGlobalObject(globalData, this);
    178179            COMPILE_ASSERT(JSGlobalObject::AnonymousSlotCount == 1, JSGlobalObject_has_only_a_single_slot);
    179180            putThisToAnonymousValue(0);
     
    283284        static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
    284285        {
    285             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     286            return Structure::create(globalData, 0, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    286287        }
    287288
  • trunk/Source/JavaScriptCore/runtime/JSNotAnObject.h

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

    r94364 r94599  
    4242        }
    4343       
    44         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     44        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4545        {
    46             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     46            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4747        }
    4848       
  • trunk/Source/JavaScriptCore/runtime/JSObject.cpp

    r94522 r94599  
    590590Structure* JSObject::createInheritorID(JSGlobalData& globalData)
    591591{
    592     m_inheritorID.set(globalData, this, createEmptyObjectStructure(globalData, this));
     592    m_inheritorID.set(globalData, this, createEmptyObjectStructure(globalData, m_structure->globalObject(), this));
    593593    ASSERT(m_inheritorID->isEmpty());
    594594    return m_inheritorID.get();
  • trunk/Source/JavaScriptCore/runtime/JSObject.h

    r94522 r94599  
    271271        }
    272272
    273         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
    274         {
    275             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     273        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
     274        {
     275            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    276276        }
    277277
     
    348348        typedef JSObject Base;
    349349
    350         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
    351         {
    352             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     350        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
     351        {
     352            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    353353        }
    354354
     
    395395        }
    396396
    397         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
    398         {
    399             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     397        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
     398        {
     399            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    400400        }
    401401
     
    440440}
    441441
    442 inline Structure* createEmptyObjectStructure(JSGlobalData& globalData, JSValue prototype)
    443 {
    444     return JSFinalObject::createStructure(globalData, prototype);
     442inline Structure* createEmptyObjectStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
     443{
     444    return JSFinalObject::createStructure(globalData, globalObject, prototype);
    445445}
    446446
  • trunk/Source/JavaScriptCore/runtime/JSObjectWithGlobalObject.h

    r94364 r94599  
    3737    typedef JSNonFinalObject Base;
    3838
    39     static Structure* createStructure(JSGlobalData& globalData, JSValue proto)
     39    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    4040    {
    41         return Structure::create(globalData, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     41        return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4242    }
    4343
  • trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.h

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

    r94364 r94599  
    4848        void putWithAttributes(ExecState*, const Identifier&, JSValue, unsigned attributes);
    4949
    50         static Structure* createStructure(JSGlobalData& globalData, JSValue proto) { return Structure::create(globalData, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info); }
     50        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info); }
    5151
    5252    protected:
  • trunk/Source/JavaScriptCore/runtime/JSString.h

    r94336 r94599  
    437437        JSValue replaceCharacter(ExecState*, UChar, const UString& replacement);
    438438
    439         static Structure* createStructure(JSGlobalData& globalData, JSValue proto)
    440         {
    441             return Structure::create(globalData, proto, TypeInfo(StringType, OverridesGetOwnPropertySlot), AnonymousSlotCount, &s_info);
     439        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
     440        {
     441            return Structure::create(globalData, globalObject, proto, TypeInfo(StringType, OverridesGetOwnPropertySlot), AnonymousSlotCount, &s_info);
    442442        }
    443443       
  • trunk/Source/JavaScriptCore/runtime/JSVariableObject.h

    r94364 r94599  
    6262        static size_t offsetOfRegisters() { return OBJECT_OFFSETOF(JSVariableObject, m_registers); }
    6363
    64         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     64        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    6565        {
    66             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     66            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    6767        }
    6868       
  • trunk/Source/JavaScriptCore/runtime/JSWrapperObject.h

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

    r94364 r94599  
    4242        static const ClassInfo s_info;
    4343
    44         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     44        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4545        {
    46             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     46            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4747        }
    4848
  • trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.h

    r93624 r94599  
    4242        static const ClassInfo s_info;
    4343
    44         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     44        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4545        {
    46             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     46            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4747        }
    4848
     
    5858            putDirect(exec->globalData(), exec->propertyNames().length, jsNumber(1), DontDelete | ReadOnly | DontEnum); // ECMA 15.11.7.5
    5959            putDirect(exec->globalData(), exec->propertyNames().prototype, prototype, DontDelete | ReadOnly | DontEnum);
    60             m_errorStructure.set(exec->globalData(), this, ErrorInstance::createStructure(exec->globalData(), prototype));
     60            m_errorStructure.set(exec->globalData(), this, ErrorInstance::createStructure(exec->globalData(), globalObject, prototype));
    6161            ASSERT(m_errorStructure);
    6262            ASSERT(m_errorStructure->typeInfo().type() == ObjectType);
  • trunk/Source/JavaScriptCore/runtime/NumberConstructor.h

    r92706 r94599  
    4343        static const ClassInfo s_info;
    4444
    45         static Structure* createStructure(JSGlobalData& globalData, JSValue proto)
     45        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    4646        {
    47             return Structure::create(globalData, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     47            return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4848        }
    4949
  • trunk/Source/JavaScriptCore/runtime/NumberObject.h

    r94364 r94599  
    4141        static const ClassInfo s_info;
    4242
    43         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     43        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4444        {
    45             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     45            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4646        }
    4747
  • trunk/Source/JavaScriptCore/runtime/NumberPrototype.h

    r92706 r94599  
    3737        static const ClassInfo s_info;
    3838
    39         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     39        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4040        {
    41             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     41            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4242        }
    4343
  • trunk/Source/JavaScriptCore/runtime/ObjectConstructor.h

    r92706 r94599  
    4242        static const ClassInfo s_info;
    4343
    44         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     44        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4545        {
    46             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     46            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4747        }
    4848
  • trunk/Source/JavaScriptCore/runtime/ObjectPrototype.h

    r94364 r94599  
    3939        static const ClassInfo s_info;
    4040
    41         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     41        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4242        {
    43             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     43            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4444        }
    4545
  • trunk/Source/JavaScriptCore/runtime/RegExp.h

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

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

    r94364 r94599  
    6868        static JS_EXPORTDATA const ClassInfo s_info;
    6969
    70         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     70        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    7171        {
    72             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     72            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    7373        }
    7474
  • trunk/Source/JavaScriptCore/runtime/RegExpPrototype.h

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

    r93920 r94599  
    8787#endif
    8888       
    89         static Structure* createStructure(JSGlobalData& globalData, JSValue proto) { return Structure::create(globalData, 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), AnonymousSlotCount, &s_info); }
    9090        virtual void visitChildren(SlotVisitor&);
    9191        static JS_EXPORTDATA const ClassInfo s_info;
  • trunk/Source/JavaScriptCore/runtime/StrictEvalActivation.h

    r94364 r94599  
    4646    virtual JSValue toStrictThisObject(ExecState*) const;
    4747
    48     static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     48    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4949    {
    50         return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     50        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    5151    }
    5252   
  • trunk/Source/JavaScriptCore/runtime/StringConstructor.h

    r92706 r94599  
    3939        static const ClassInfo s_info;
    4040
    41         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     41        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4242        {
    43             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     43            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4444        }
    4545
  • trunk/Source/JavaScriptCore/runtime/StringObject.h

    r94364 r94599  
    5555        JSString* internalValue() const { return asString(JSWrapperObject::internalValue());}
    5656
    57         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     57        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    5858        {
    59             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     59            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    6060        }
    6161
  • trunk/Source/JavaScriptCore/runtime/StringObjectThatMasqueradesAsUndefined.h

    r93688 r94599  
    3636        {
    3737            JSString* newString = jsString(exec, string);
    38             Structure* structure = createStructure(exec->globalData(), exec->lexicalGlobalObject()->stringPrototype());
     38            Structure* structure = createStructure(exec->globalData(), exec->lexicalGlobalObject(), exec->lexicalGlobalObject()->stringPrototype());
    3939            return new (allocateCell<StringObjectThatMasqueradesAsUndefined>(*exec->heap())) StringObjectThatMasqueradesAsUndefined(exec, structure, newString);
    4040        }
     
    4646        }
    4747
    48         static Structure* createStructure(JSGlobalData& globalData, JSValue proto)
     48        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue proto)
    4949        {
    50             return Structure::create(globalData, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     50            return Structure::create(globalData, globalObject, proto, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    5151        }
    5252
  • trunk/Source/JavaScriptCore/runtime/StringPrototype.h

    r93624 r94599  
    4343        virtual bool getOwnPropertyDescriptor(ExecState*, const Identifier&, PropertyDescriptor&);
    4444
    45         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     45        static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    4646        {
    47             return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     47            return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    4848        }
    4949
  • trunk/Source/JavaScriptCore/runtime/Structure.cpp

    r93920 r94599  
    217217    , m_didTransition(true)
    218218{
     219    if (previous->m_globalObject)
     220        m_globalObject.set(globalData, this, previous->m_globalObject.get());
    219221}
    220222
     
    753755    ASSERT(structure()->typeInfo().overridesVisitChildren());
    754756    JSCell::visitChildren(visitor);
     757    if (m_globalObject)
     758        visitor.append(&m_globalObject);
    755759    if (m_prototype)
    756760        visitor.append(&m_prototype);
  • trunk/Source/JavaScriptCore/runtime/Structure.h

    r93920 r94599  
    6363        typedef JSCell Base;
    6464
    65         static Structure* create(JSGlobalData& globalData, JSValue prototype, const TypeInfo& typeInfo, unsigned anonymousSlotCount, const ClassInfo* classInfo)
     65        static Structure* create(JSGlobalData& globalData, JSGlobalObject*, JSValue prototype, const TypeInfo& typeInfo, unsigned anonymousSlotCount, const ClassInfo* classInfo)
    6666        {
    6767            ASSERT(globalData.structureStructure);
     
    122122        const TypeInfo& typeInfo() const { ASSERT(structure()->classInfo() == &s_info); return m_typeInfo; }
    123123
     124        JSGlobalObject* globalObject() { return m_globalObject.get(); }
     125        void setGlobalObject(JSGlobalData& globalData, JSGlobalObject* globalObject) { m_globalObject.set(globalData, this, globalObject); }
     126       
    124127        JSValue storedPrototype() const { return m_prototype.get(); }
    125128        JSValue prototypeForLookup(ExecState*) const;
     
    241244
    242245        TypeInfo m_typeInfo;
    243 
     246       
     247        WriteBarrier<JSGlobalObject> m_globalObject;
    244248        WriteBarrier<Unknown> m_prototype;
    245249        mutable WriteBarrier<StructureChain> m_cachedPrototypeChain;
  • trunk/Source/JavaScriptCore/runtime/StructureChain.h

    r93920 r94599  
    5555        void visitChildren(SlotVisitor&);
    5656
    57         static Structure* createStructure(JSGlobalData& globalData, JSValue prototype) { return Structure::create(globalData, 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), 0, &s_info); }
    5858       
    5959        static ClassInfo s_info;
  • trunk/Source/JavaScriptGlue/ChangeLog

    r94364 r94599  
     12011-09-05  Oliver Hunt  <oliver@apple.com>
     2
     3        An object's structure should reference the global object responsible for its creation
     4        https://bugs.webkit.org/show_bug.cgi?id=67624
     5
     6        Reviewed by Gavin Barraclough.
     7
     8        Update for Structure::create() requiring a global object.
     9
     10        * JSRun.h:
     11        (JSGlueGlobalObject::create):
     12        * UserObjectImp.h:
     13        (UserObjectImp::createStructure):
     14
    1152011-09-01  Mark Hahnenberg  <mhahnenberg@apple.com>
    216
  • trunk/Source/JavaScriptGlue/JSRun.h

    r93059 r94599  
    4141        static JSGlueGlobalObject* create(JSGlobalData& globalData, Structure* structure, JSFlags flags = kJSFlagNone)
    4242        {
    43             Structure* userObjectStructure = UserObjectImp::createStructure(globalData, jsNull());
     43            Structure* userObjectStructure = UserObjectImp::createStructure(globalData, 0, jsNull());
    4444            return new (allocateCell<JSGlueGlobalObject>(globalData.heap)) JSGlueGlobalObject(globalData, structure, userObjectStructure, flags);
    4545        }
  • trunk/Source/JavaScriptGlue/UserObjectImp.h

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

    r94598 r94599  
     12011-09-05  Oliver Hunt  <oliver@apple.com>
     2
     3        An object's structure should reference the global object responsible for its creation
     4        https://bugs.webkit.org/show_bug.cgi?id=67624
     5
     6        Reviewed by Gavin Barraclough.
     7
     8        Update calls to Structure::create() to pass the globalObject in,
     9        and update the CodeGenerator to generate appropriate createStructure
     10        methods.
     11
     12        * bindings/js/JSAudioConstructor.h:
     13        (WebCore::JSAudioConstructor::createStructure):
     14        * bindings/js/JSDOMBinding.h:
     15        (WebCore::DOMConstructorObject::createStructure):
     16        (WebCore::getDOMStructure):
     17        * bindings/js/JSDOMGlobalObject.h:
     18        (WebCore::JSDOMGlobalObject::createStructure):
     19        (WebCore::getDOMConstructor):
     20        * bindings/js/JSDOMWindowBase.h:
     21        (WebCore::JSDOMWindowBase::createStructure):
     22        * bindings/js/JSDOMWindowShell.cpp:
     23        (WebCore::JSDOMWindowShell::setWindow):
     24        * bindings/js/JSDOMWindowShell.h:
     25        (WebCore::JSDOMWindowShell::createStructure):
     26        * bindings/js/JSDOMWrapper.h:
     27        (WebCore::JSDOMWrapper::createStructure):
     28        * bindings/js/JSImageConstructor.h:
     29        (WebCore::JSImageConstructor::createStructure):
     30        * bindings/js/JSImageDataCustom.cpp:
     31        (WebCore::toJS):
     32        * bindings/js/JSOptionConstructor.h:
     33        (WebCore::JSOptionConstructor::createStructure):
     34        * bindings/js/JSWorkerContextBase.h:
     35        (WebCore::JSWorkerContextBase::createStructure):
     36        * bindings/js/WorkerScriptController.cpp:
     37        (WebCore::WorkerScriptController::initScript):
     38        * bindings/scripts/CodeGeneratorJS.pm:
     39        (GenerateHeader):
     40        (GenerateImplementation):
     41        (GenerateConstructorDeclaration):
     42        * bridge/c/CRuntimeObject.h:
     43        (JSC::Bindings::CRuntimeObject::createStructure):
     44        * bridge/c/c_instance.cpp:
     45        (JSC::Bindings::CRuntimeMethod::createStructure):
     46        * bridge/jni/jsc/JavaInstanceJSC.cpp:
     47        (JavaRuntimeMethod::createStructure):
     48        * bridge/jni/jsc/JavaRuntimeObject.h:
     49        (JSC::Bindings::JavaRuntimeObject::createStructure):
     50        * bridge/objc/ObjCRuntimeObject.h:
     51        (JSC::Bindings::ObjCRuntimeObject::createStructure):
     52        * bridge/objc/objc_instance.mm:
     53        (ObjCRuntimeMethod::createStructure):
     54        * bridge/objc/objc_runtime.h:
     55        (JSC::Bindings::ObjcFallbackObjectImp::createStructure):
     56        * bridge/runtime_array.h:
     57        (JSC::RuntimeArray::createStructure):
     58        * bridge/runtime_method.h:
     59        (JSC::RuntimeMethod::createStructure):
     60        * bridge/runtime_object.h:
     61        (JSC::Bindings::RuntimeObject::createStructure):
     62
    1632011-09-06  Anders Carlsson  <andersca@apple.com>
    264
  • trunk/Source/WebCore/bindings/js/JSAudioConstructor.h

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

    r93059 r94599  
    4646    class DOMConstructorObject : public JSDOMWrapper {
    4747    public:
    48         static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype)
     48        static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    4949        {
    50             return JSC::Structure::create(globalData, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     50            return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    5151        }
    5252
     
    9191        if (JSC::Structure* structure = getCachedDOMStructure(globalObject, &WrapperClass::s_info))
    9292            return structure;
    93         return cacheDOMStructure(globalObject, WrapperClass::createStructure(exec->globalData(), WrapperClass::createPrototype(exec, globalObject)), &WrapperClass::s_info);
     93        return cacheDOMStructure(globalObject, WrapperClass::createStructure(exec->globalData(), globalObject, WrapperClass::createPrototype(exec, globalObject)), &WrapperClass::s_info);
    9494    }
    9595
  • trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.h

    r91790 r94599  
    7272        static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype)
    7373        {
    74             return JSC::Structure::create(globalData, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     74            return JSC::Structure::create(globalData, 0, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    7575        }
    7676
     
    8989        if (JSC::JSObject* constructor = const_cast<JSDOMGlobalObject*>(globalObject)->constructors().get(&ConstructorClass::s_info).get())
    9090            return constructor;
    91         JSC::JSObject* constructor = ConstructorClass::create(exec, ConstructorClass::createStructure(exec->globalData(), globalObject->objectPrototype()), const_cast<JSDOMGlobalObject*>(globalObject));
     91        JSC::JSObject* constructor = ConstructorClass::create(exec, ConstructorClass::createStructure(exec->globalData(), const_cast<JSDOMGlobalObject*>(globalObject), globalObject->objectPrototype()), const_cast<JSDOMGlobalObject*>(globalObject));
    9292        ASSERT(!const_cast<JSDOMGlobalObject*>(globalObject)->constructors().contains(&ConstructorClass::s_info));
    9393        JSC::WriteBarrier<JSC::JSObject> temp;
  • trunk/Source/WebCore/bindings/js/JSDOMWindowBase.h

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

    r94364 r94599  
    6969    // when we allocate the global object. (Once the global object is fully
    7070    // constructed, it can mark its own prototype.)
    71     Structure* prototypeStructure = JSDOMWindowPrototype::createStructure(*JSDOMWindow::commonJSGlobalData(), jsNull());
     71    Structure* prototypeStructure = JSDOMWindowPrototype::createStructure(*JSDOMWindow::commonJSGlobalData(), 0, jsNull());
    7272    Strong<JSDOMWindowPrototype> prototype(*JSDOMWindow::commonJSGlobalData(), JSDOMWindowPrototype::create(*JSDOMWindow::commonJSGlobalData(), 0, prototypeStructure));
    7373
    74     Structure* structure = JSDOMWindow::createStructure(*JSDOMWindow::commonJSGlobalData(), prototype.get());
     74    Structure* structure = JSDOMWindow::createStructure(*JSDOMWindow::commonJSGlobalData(), 0, prototype.get());
    7575    JSDOMWindow* jsDOMWindow = JSDOMWindow::create(*JSDOMWindow::commonJSGlobalData(), structure, domWindow, this);
     76    prototypeStructure->setGlobalObject(*JSDOMWindow::commonJSGlobalData(), jsDOMWindow);
    7677    prototype->putAnonymousValue(*JSDOMWindow::commonJSGlobalData(), 0, jsDOMWindow);
    7778    setWindow(*JSDOMWindow::commonJSGlobalData(), jsDOMWindow);
  • trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h

    r94364 r94599  
    6060        static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype)
    6161        {
    62             return JSC::Structure::create(globalData, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     62            return JSC::Structure::create(globalData, 0, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    6363        }
    6464
  • trunk/Source/WebCore/bindings/js/JSDOMWrapper.h

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

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

    r93264 r94599  
    5151    Structure* cpaStructure = getCachedDOMStructure(globalObject, &cpaClassInfo);
    5252    if (!cpaStructure)
    53         cpaStructure = cacheDOMStructure(globalObject, JSByteArray::createStructure(exec->globalData(), jsNull(), &cpaClassInfo), &cpaClassInfo);
     53        cpaStructure = cacheDOMStructure(globalObject, JSByteArray::createStructure(exec->globalData(), globalObject, jsNull(), &cpaClassInfo), &cpaClassInfo);
    5454    wrapper->putDirect(exec->globalData(), dataName, JSByteArray::create(exec, cpaStructure, imageData->data()->data()), DontDelete | ReadOnly);
    5555    exec->heap()->reportExtraMemoryCost(imageData->data()->length());
  • trunk/Source/WebCore/bindings/js/JSOptionConstructor.h

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

    r84052 r94599  
    5050        virtual ScriptExecutionContext* scriptExecutionContext() const;
    5151
    52         static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype)
     52        static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    5353        {
    54             return JSC::Structure::create(globalData, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     54            return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    5555        }
    5656
  • trunk/Source/WebCore/bindings/js/WorkerScriptController.cpp

    r93086 r94599  
    7878    // when we allocate the global object. (Once the global object is fully
    7979    // constructed, it can mark its own prototype.)
    80     Structure* workerContextPrototypeStructure = JSWorkerContextPrototype::createStructure(*m_globalData, jsNull());
     80    Structure* workerContextPrototypeStructure = JSWorkerContextPrototype::createStructure(*m_globalData, 0, jsNull());
    8181    Strong<JSWorkerContextPrototype> workerContextPrototype(*m_globalData, JSWorkerContextPrototype::create(*m_globalData, 0, workerContextPrototypeStructure));
    8282
    8383    if (m_workerContext->isDedicatedWorkerContext()) {
    84         Structure* dedicatedContextPrototypeStructure = JSDedicatedWorkerContextPrototype::createStructure(*m_globalData, workerContextPrototype.get());
     84        Structure* dedicatedContextPrototypeStructure = JSDedicatedWorkerContextPrototype::createStructure(*m_globalData, 0, workerContextPrototype.get());
    8585        Strong<JSDedicatedWorkerContextPrototype> dedicatedContextPrototype(*m_globalData, JSDedicatedWorkerContextPrototype::create(*m_globalData, 0, dedicatedContextPrototypeStructure));
    86         Structure* structure = JSDedicatedWorkerContext::createStructure(*m_globalData, dedicatedContextPrototype.get());
     86        Structure* structure = JSDedicatedWorkerContext::createStructure(*m_globalData, 0, dedicatedContextPrototype.get());
    8787
    8888        m_workerContextWrapper.set(*m_globalData, JSDedicatedWorkerContext::create(*m_globalData, structure, m_workerContext->toDedicatedWorkerContext()));
     89        workerContextPrototypeStructure->setGlobalObject(*m_globalData, m_workerContextWrapper.get());
     90        dedicatedContextPrototypeStructure->setGlobalObject(*m_globalData, m_workerContextWrapper.get());
     91        ASSERT(structure->globalObject() == m_workerContextWrapper);
     92        ASSERT(m_workerContextWrapper->structure()->globalObject() == m_workerContextWrapper);
     93        workerContextPrototype->structure()->setGlobalObject(*m_globalData, m_workerContextWrapper.get());
     94        dedicatedContextPrototype->structure()->setGlobalObject(*m_globalData, m_workerContextWrapper.get());
    8995        workerContextPrototype->putAnonymousValue(*m_globalData, 0, m_workerContextWrapper.get());
    9096        dedicatedContextPrototype->putAnonymousValue(*m_globalData, 0, m_workerContextWrapper.get());
     
    9298    } else {
    9399        ASSERT(m_workerContext->isSharedWorkerContext());
    94         Structure* sharedContextPrototypeStructure = JSSharedWorkerContextPrototype::createStructure(*m_globalData, workerContextPrototype.get());
     100        Structure* sharedContextPrototypeStructure = JSSharedWorkerContextPrototype::createStructure(*m_globalData, 0, workerContextPrototype.get());
    95101        Strong<JSSharedWorkerContextPrototype> sharedContextPrototype(*m_globalData, JSSharedWorkerContextPrototype::create(*m_globalData, 0, sharedContextPrototypeStructure));
    96         Structure* structure = JSSharedWorkerContext::createStructure(*m_globalData, sharedContextPrototype.get());
     102        Structure* structure = JSSharedWorkerContext::createStructure(*m_globalData, 0, sharedContextPrototype.get());
    97103
    98104        m_workerContextWrapper.set(*m_globalData, JSSharedWorkerContext::create(*m_globalData, structure, m_workerContext->toSharedWorkerContext()));
     105        m_workerContextWrapper->structure()->setGlobalObject(*m_globalData, m_workerContextWrapper.get());
     106        sharedContextPrototype->structure()->setGlobalObject(*m_globalData, m_workerContextWrapper.get());
    99107        workerContextPrototype->putAnonymousValue(*m_globalData, 0, m_workerContextWrapper.get());
    100108        sharedContextPrototype->putAnonymousValue(*m_globalData, 0, m_workerContextWrapper.get());
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm

    r94364 r94599  
    802802    }
    803803    push(@headerContent,
    804         "    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype)\n" .
     804        "    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)\n" .
    805805        "    {\n" .
    806         "        return JSC::Structure::create(globalData, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);\n" .
     806        "        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);\n" .
    807807        "    }\n\n");
    808808
     
    10451045    }
    10461046    push(@headerContent,
    1047         "    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype)\n" .
     1047        "    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)\n" .
    10481048        "    {\n" .
    1049         "        return JSC::Structure::create(globalData, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);\n" .
     1049        "        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);\n" .
    10501050        "    }\n");
    10511051    if ($dataNode->extendedAttributes->{"DelegatingPrototypePutFunction"}) {
     
    15511551        push(@implContent, "{\n");
    15521552        if ($hasParent && $parentClassName ne "JSC::DOMNodeFilter") {
    1553             push(@implContent, "    return ${className}Prototype::create(exec->globalData(), globalObject, ${className}Prototype::createStructure(exec->globalData(), ${parentClassName}Prototype::self(exec, globalObject)));\n");
     1553            push(@implContent, "    return ${className}Prototype::create(exec->globalData(), globalObject, ${className}Prototype::createStructure(exec->globalData(), globalObject, ${parentClassName}Prototype::self(exec, globalObject)));\n");
    15541554        } else {
    1555             push(@implContent, "    return ${className}Prototype::create(exec->globalData(), globalObject, ${className}Prototype::createStructure(globalObject->globalData(), globalObject->objectPrototype()));\n");
     1555            push(@implContent, "    return ${className}Prototype::create(exec->globalData(), globalObject, ${className}Prototype::createStructure(globalObject->globalData(), globalObject, globalObject->objectPrototype()));\n");
    15561556        }
    15571557        push(@implContent, "}\n\n");
     
    31123112    push(@$outputArray, "    static const JSC::ClassInfo s_info;\n");
    31133113
    3114     push(@$outputArray, "    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype)\n");
     3114    push(@$outputArray, "    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)\n");
    31153115    push(@$outputArray, "    {\n");
    3116     push(@$outputArray, "        return JSC::Structure::create(globalData, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);\n");
     3116    push(@$outputArray, "        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);\n");
    31173117    push(@$outputArray, "    }\n");
    31183118
  • trunk/Source/WebCore/bridge/c/CRuntimeObject.h

    r93059 r94599  
    5555    static const ClassInfo s_info;
    5656
    57     static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     57    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    5858    {
    59         return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     59        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    6060    }
    6161
  • trunk/Source/WebCore/bridge/c/c_instance.cpp

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

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

    r93059 r94599  
    5353    static const ClassInfo s_info;
    5454
    55     static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     55    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    5656    {
    57         return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     57        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    5858    }
    5959
  • trunk/Source/WebCore/bridge/objc/ObjCRuntimeObject.h

    r93378 r94599  
    5252    static const ClassInfo s_info;
    5353
    54     static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     54    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    5555    {
    56         return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     56        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    5757    }
    5858
  • trunk/Source/WebCore/bridge/objc/objc_instance.mm

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

    r94364 r94599  
    112112    }
    113113
    114     static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     114    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    115115    {
    116         return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     116        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    117117    }
    118118
  • trunk/Source/WebCore/bridge/qt/qt_instance.cpp

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

    r93059 r94599  
    210210    static const ClassInfo s_info;
    211211
    212     static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
    213     {
    214         return Structure::create(globalData, prototype, TypeInfo(ObjectType,  StructureFlags), AnonymousSlotCount, &s_info);
     212    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
     213    {
     214        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType,  StructureFlags), AnonymousSlotCount, &s_info);
    215215    }
    216216
  • trunk/Source/WebCore/bridge/qt/qt_runtime.cpp

    r93059 r94599  
    916916        WTF::RefPtr<WTF::ByteArray> wtfByteArray = WTF::ByteArray::create(qtByteArray.length());
    917917        memcpy(wtfByteArray->data(), qtByteArray.constData(), qtByteArray.length());
    918         return JSC::JSByteArray::create(exec, JSC::JSByteArray::createStructure(exec->globalData(), jsNull()), wtfByteArray.get());
     918        return JSC::JSByteArray::create(exec, JSC::JSByteArray::createStructure(exec->globalData(), exec->lexicalGlobalObject(), jsNull()), wtfByteArray.get());
    919919    }
    920920
  • trunk/Source/WebCore/bridge/qt/qt_runtime.h

    r93059 r94599  
    138138    }
    139139
    140     static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
    141     {
    142         return Structure::create(globalData, prototype, TypeInfo(ObjectType,  StructureFlags), AnonymousSlotCount, &s_info);
     140    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
     141    {
     142        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType,  StructureFlags), AnonymousSlotCount, &s_info);
    143143    }
    144144
  • trunk/Source/WebCore/bridge/runtime_array.h

    r94364 r94599  
    6969    }
    7070
    71     static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     71    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    7272    {
    73         return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     73        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    7474    }
    7575
  • trunk/Source/WebCore/bridge/runtime_method.h

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

    r94364 r94599  
    6868    }
    6969
    70     static Structure* createStructure(JSGlobalData& globalData, JSValue prototype)
     70    static Structure* createStructure(JSGlobalData& globalData, JSGlobalObject* globalObject, JSValue prototype)
    7171    {
    72         return Structure::create(globalData, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     72        return Structure::create(globalData, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    7373    }
    7474
  • trunk/Source/WebKit/mac/ChangeLog

    r94386 r94599  
     12011-09-05  Oliver Hunt  <oliver@apple.com>
     2
     3        An object's structure should reference the global object responsible for its creation
     4        https://bugs.webkit.org/show_bug.cgi?id=67624
     5
     6        Reviewed by Gavin Barraclough.
     7
     8        Update for new Structure::create() globalObject parameter.
     9
     10        * Plugins/Hosted/ProxyInstance.mm:
     11        (WebKit::ProxyRuntimeMethod::createStructure):
     12        * Plugins/Hosted/ProxyRuntimeObject.h:
     13        (WebKit::ProxyRuntimeObject::createStructure):
     14
    1152011-09-01  Mark Rowe  <mrowe@apple.com>
    216
  • trunk/Source/WebKit/mac/Plugins/Hosted/ProxyInstance.mm

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

    r93688 r94599  
    5252    ProxyInstance* getInternalProxyInstance() const;
    5353
    54     static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype)
     54    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    5555    {
    56         return JSC::Structure::create(globalData, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     56        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    5757    }
    5858
  • trunk/Source/WebKit2/ChangeLog

    r94586 r94599  
     12011-09-05  Oliver Hunt  <oliver@apple.com>
     2
     3        An object's structure should reference the global object responsible for its creation
     4        https://bugs.webkit.org/show_bug.cgi?id=67624
     5
     6        Reviewed by Gavin Barraclough.
     7
     8        Update for new Structure::create globalObject parameter.
     9
     10        * WebProcess/Plugins/Netscape/JSNPMethod.cpp:
     11        (WebKit::JSNPMethod::create):
     12        * WebProcess/Plugins/Netscape/JSNPMethod.h:
     13        (WebKit::JSNPMethod::createStructure):
     14        * WebProcess/Plugins/Netscape/JSNPObject.cpp:
     15        (WebKit::JSNPObject::create):
     16        * WebProcess/Plugins/Netscape/JSNPObject.h:
     17        (WebKit::JSNPObject::createStructure):
     18
    1192011-09-06  Ryosuke Niwa  <rniwa@webkit.org>
    220
  • trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPMethod.cpp

    r93720 r94599  
    5151JSNPMethod* JSNPMethod::create(ExecState* exec, JSGlobalObject* globalObject, const Identifier& ident, NPIdentifier npIdent)
    5252{
    53     JSC::Structure* structure = createStructure(exec->globalData(), globalObject->functionPrototype());
     53    JSC::Structure* structure = createStructure(exec->globalData(), globalObject, globalObject->functionPrototype());
    5454    return new (JSC::allocateCell<JSNPMethod>(*exec->heap())) JSNPMethod(exec, globalObject, ident, npIdent, structure);
    5555}
  • trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPMethod.h

    r93720 r94599  
    4747    JSNPMethod(JSC::ExecState*, JSC::JSGlobalObject*, const JSC::Identifier&, NPIdentifier, JSC::Structure*);
    4848
    49     static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype)
     49    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    5050    {
    51         return JSC::Structure::create(globalData, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     51        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    5252    }
    5353
  • trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp

    r94364 r94599  
    7272JSNPObject* JSNPObject::create(JSC::JSGlobalObject* globalObject, NPRuntimeObjectMap* objectMap, NPObject* npObject)
    7373{
    74     Structure* structure = createStructure(globalObject->globalData(), globalObject->objectPrototype());
     74    Structure* structure = createStructure(globalObject->globalData(), globalObject, globalObject->objectPrototype());
    7575    return new (JSC::allocateCell<JSNPObject>(globalObject->globalData().heap)) JSNPObject(globalObject, objectMap, npObject, structure);
    7676}
  • trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h

    r94364 r94599  
    6666    static const unsigned StructureFlags = JSC::OverridesGetOwnPropertySlot | JSC::OverridesGetPropertyNames | JSObject::StructureFlags;
    6767   
    68     static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSValue prototype)
     68    static JSC::Structure* createStructure(JSC::JSGlobalData& globalData, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)
    6969    {
    70         return JSC::Structure::create(globalData, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
     70        return JSC::Structure::create(globalData, globalObject, prototype, JSC::TypeInfo(JSC::ObjectType, StructureFlags), AnonymousSlotCount, &s_info);
    7171    }
    7272
Note: See TracChangeset for help on using the changeset viewer.