Changeset 97016 in webkit


Ignore:
Timestamp:
Oct 8, 2011 4:26:41 PM (13 years ago)
Author:
mhahnenberg@apple.com
Message:

Add static version of JSCell::getConstructData
https://bugs.webkit.org/show_bug.cgi?id=69673

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Added static version of getConstructData to all classes that
override it and changed the virtual versions to call the static
versions. This is the first step in de-virtualizing JSCell::getConstructData.

  • API/JSCallbackConstructor.cpp:

(JSC::JSCallbackConstructor::getConstructData):

  • API/JSCallbackConstructor.h:
  • API/JSCallbackObject.h:
  • API/JSCallbackObjectFunctions.h:

(JSC::::getConstructData):

  • runtime/ArrayConstructor.cpp:

(JSC::ArrayConstructor::getConstructData):

  • runtime/ArrayConstructor.h:
  • runtime/BooleanConstructor.cpp:

(JSC::BooleanConstructor::getConstructData):

  • runtime/BooleanConstructor.h:
  • runtime/DateConstructor.cpp:

(JSC::DateConstructor::getConstructData):

  • runtime/DateConstructor.h:
  • runtime/ErrorConstructor.cpp:

(JSC::ErrorConstructor::getConstructData):

  • runtime/ErrorConstructor.h:
  • runtime/FunctionConstructor.cpp:

(JSC::FunctionConstructor::getConstructData):

  • runtime/FunctionConstructor.h:
  • runtime/JSCell.cpp:

(JSC::JSCell::getConstructData):

  • runtime/JSCell.h:
  • runtime/JSFunction.cpp:

(JSC::JSFunction::getConstructData):

  • runtime/JSFunction.h:
  • runtime/NativeErrorConstructor.cpp:

(JSC::NativeErrorConstructor::getConstructData):

  • runtime/NativeErrorConstructor.h:
  • runtime/NumberConstructor.cpp:

(JSC::NumberConstructor::getConstructData):

  • runtime/NumberConstructor.h:
  • runtime/ObjectConstructor.cpp:

(JSC::ObjectConstructor::getConstructData):

  • runtime/ObjectConstructor.h:
  • runtime/RegExpConstructor.cpp:

(JSC::RegExpConstructor::getConstructData):

  • runtime/RegExpConstructor.h:
  • runtime/StringConstructor.cpp:

(JSC::StringConstructor::getConstructData):

  • runtime/StringConstructor.h:

Source/WebCore:

No new tests.

Added static version of getConstructData to all classes that
override it and changed the virtual versions to call the static
versions. This is the first step in de-virtualizing JSCell::getConstructData.

  • bindings/js/JSAudioConstructor.cpp:

(WebCore::JSAudioConstructor::getConstructData):

  • bindings/js/JSAudioConstructor.h:
  • bindings/js/JSImageConstructor.cpp:

(WebCore::JSImageConstructor::getConstructData):

  • bindings/js/JSImageConstructor.h:
  • bindings/js/JSOptionConstructor.cpp:

(WebCore::JSOptionConstructor::getConstructData):

  • bindings/js/JSOptionConstructor.h:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateConstructorDeclaration):
(GenerateConstructorDefinition):

  • bindings/scripts/test/JS/JSTestInterface.cpp:

(WebCore::JSTestInterfaceConstructor::getConstructData):

  • bridge/runtime_object.cpp:

(JSC::Bindings::RuntimeObject::getConstructData):

  • bridge/runtime_object.h:

Source/WebKit2:

Added static version of getConstructData to all classes that
override it and changed the virtual versions to call the static
versions. This is the first step in de-virtualizing JSCell::getConstructData.

  • WebProcess/Plugins/Netscape/JSNPObject.cpp:

(WebKit::JSNPObject::getConstructData):

  • WebProcess/Plugins/Netscape/JSNPObject.h:
Location:
trunk/Source
Files:
43 edited

Legend:

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

    r95936 r97016  
    8989ConstructType JSCallbackConstructor::getConstructData(ConstructData& constructData)
    9090{
     91    return getConstructData(this, constructData);
     92}
     93
     94ConstructType JSCallbackConstructor::getConstructData(JSCell*, ConstructData& constructData)
     95{
    9196    constructData.native.function = constructJSCallback;
    9297    return ConstructTypeHost;
  • trunk/Source/JavaScriptCore/API/JSCallbackConstructor.h

    r94929 r97016  
    6060private:
    6161    virtual ConstructType getConstructData(ConstructData&);
     62    static ConstructType getConstructData(JSCell*, ConstructData&);
    6263
    6364    JSClassRef m_class;
  • trunk/Source/JavaScriptCore/API/JSCallbackObject.h

    r97006 r97016  
    198198
    199199    virtual ConstructType getConstructData(ConstructData&);
     200    static ConstructType getConstructData(JSCell*, ConstructData&);
    200201    virtual CallType getCallDataVirtual(CallData&);
    201202    static CallType getCallData(JSCell*, CallData&);
  • trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h

    r97006 r97016  
    331331ConstructType JSCallbackObject<Parent>::getConstructData(ConstructData& constructData)
    332332{
    333     for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) {
     333    return getConstructData(this, constructData);
     334}
     335
     336template <class Parent>
     337ConstructType JSCallbackObject<Parent>::getConstructData(JSCell* cell, ConstructData& constructData)
     338{
     339    JSCallbackObject* thisObject = static_cast<JSCallbackObject*>(cell);
     340    for (JSClassRef jsClass = thisObject->classRef(); jsClass; jsClass = jsClass->parentClass) {
    334341        if (jsClass->callAsConstructor) {
    335342            constructData.native.function = construct;
  • trunk/Source/JavaScriptCore/ChangeLog

    r97015 r97016  
     12011-10-08  Mark Hahnenberg  <mhahnenberg@apple.com>
     2
     3        Add static version of JSCell::getConstructData
     4        https://bugs.webkit.org/show_bug.cgi?id=69673
     5
     6        Reviewed by Geoffrey Garen.
     7
     8        Added static version of getConstructData to all classes that
     9        override it and changed the virtual versions to call the static
     10        versions.  This is the first step in de-virtualizing JSCell::getConstructData.
     11
     12        * API/JSCallbackConstructor.cpp:
     13        (JSC::JSCallbackConstructor::getConstructData):
     14        * API/JSCallbackConstructor.h:
     15        * API/JSCallbackObject.h:
     16        * API/JSCallbackObjectFunctions.h:
     17        (JSC::::getConstructData):
     18        * runtime/ArrayConstructor.cpp:
     19        (JSC::ArrayConstructor::getConstructData):
     20        * runtime/ArrayConstructor.h:
     21        * runtime/BooleanConstructor.cpp:
     22        (JSC::BooleanConstructor::getConstructData):
     23        * runtime/BooleanConstructor.h:
     24        * runtime/DateConstructor.cpp:
     25        (JSC::DateConstructor::getConstructData):
     26        * runtime/DateConstructor.h:
     27        * runtime/ErrorConstructor.cpp:
     28        (JSC::ErrorConstructor::getConstructData):
     29        * runtime/ErrorConstructor.h:
     30        * runtime/FunctionConstructor.cpp:
     31        (JSC::FunctionConstructor::getConstructData):
     32        * runtime/FunctionConstructor.h:
     33        * runtime/JSCell.cpp:
     34        (JSC::JSCell::getConstructData):
     35        * runtime/JSCell.h:
     36        * runtime/JSFunction.cpp:
     37        (JSC::JSFunction::getConstructData):
     38        * runtime/JSFunction.h:
     39        * runtime/NativeErrorConstructor.cpp:
     40        (JSC::NativeErrorConstructor::getConstructData):
     41        * runtime/NativeErrorConstructor.h:
     42        * runtime/NumberConstructor.cpp:
     43        (JSC::NumberConstructor::getConstructData):
     44        * runtime/NumberConstructor.h:
     45        * runtime/ObjectConstructor.cpp:
     46        (JSC::ObjectConstructor::getConstructData):
     47        * runtime/ObjectConstructor.h:
     48        * runtime/RegExpConstructor.cpp:
     49        (JSC::RegExpConstructor::getConstructData):
     50        * runtime/RegExpConstructor.h:
     51        * runtime/StringConstructor.cpp:
     52        (JSC::StringConstructor::getConstructData):
     53        * runtime/StringConstructor.h:
     54
    1552011-10-08  Mark Hahnenberg  <mhahnenberg@apple.com>
    256
  • trunk/Source/JavaScriptCore/runtime/ArrayConstructor.cpp

    r97006 r97016  
    100100ConstructType ArrayConstructor::getConstructData(ConstructData& constructData)
    101101{
     102    return getConstructData(this, constructData);
     103}
     104
     105ConstructType ArrayConstructor::getConstructData(JSCell*, ConstructData& constructData)
     106{
    102107    constructData.native.function = constructWithArrayConstructor;
    103108    return ConstructTypeHost;
  • trunk/Source/JavaScriptCore/runtime/ArrayConstructor.h

    r97015 r97016  
    5858
    5959        virtual ConstructType getConstructData(ConstructData&);
     60        static ConstructType getConstructData(JSCell*, ConstructData&);
    6061        virtual CallType getCallDataVirtual(CallData&);
    6162        static CallType getCallData(JSCell*, CallData&);
  • trunk/Source/JavaScriptCore/runtime/BooleanConstructor.cpp

    r97006 r97016  
    6161ConstructType BooleanConstructor::getConstructData(ConstructData& constructData)
    6262{
     63    return getConstructData(this, constructData);
     64}
     65
     66ConstructType BooleanConstructor::getConstructData(JSCell*, ConstructData& constructData)
     67{
    6368    constructData.native.function = constructWithBooleanConstructor;
    6469    return ConstructTypeHost;
  • trunk/Source/JavaScriptCore/runtime/BooleanConstructor.h

    r97006 r97016  
    5252        BooleanConstructor(JSGlobalObject*, Structure*);
    5353        virtual ConstructType getConstructData(ConstructData&);
     54        static ConstructType getConstructData(JSCell*, ConstructData&);
    5455        virtual CallType getCallDataVirtual(CallData&);
    5556        static CallType getCallData(JSCell*, CallData&);
  • trunk/Source/JavaScriptCore/runtime/DateConstructor.cpp

    r97015 r97016  
    164164ConstructType DateConstructor::getConstructData(ConstructData& constructData)
    165165{
     166    return getConstructData(this, constructData);
     167}
     168
     169ConstructType DateConstructor::getConstructData(JSCell*, ConstructData& constructData)
     170{
    166171    constructData.native.function = constructWithDateConstructor;
    167172    return ConstructTypeHost;
  • trunk/Source/JavaScriptCore/runtime/DateConstructor.h

    r97015 r97016  
    5353        DateConstructor(JSGlobalObject*, Structure*);
    5454        virtual ConstructType getConstructData(ConstructData&);
     55        static ConstructType getConstructData(JSCell*, ConstructData&);
    5556        virtual CallType getCallDataVirtual(CallData&);
    5657        static CallType getCallData(JSCell*, CallData&);
  • trunk/Source/JavaScriptCore/runtime/ErrorConstructor.cpp

    r97006 r97016  
    5656ConstructType ErrorConstructor::getConstructData(ConstructData& constructData)
    5757{
     58    return getConstructData(this, constructData);
     59}
     60
     61ConstructType ErrorConstructor::getConstructData(JSCell*, ConstructData& constructData)
     62{
    5863    constructData.native.function = constructWithErrorConstructor;
    5964    return ConstructTypeHost;
  • trunk/Source/JavaScriptCore/runtime/ErrorConstructor.h

    r97006 r97016  
    5353        ErrorConstructor(JSGlobalObject*, Structure*);
    5454        virtual ConstructType getConstructData(ConstructData&);
     55        static ConstructType getConstructData(JSCell*, ConstructData&);
    5556        virtual CallType getCallDataVirtual(CallData&);
    5657        static CallType getCallData(JSCell*, CallData&);
  • trunk/Source/JavaScriptCore/runtime/FunctionConstructor.cpp

    r97006 r97016  
    6161
    6262ConstructType FunctionConstructor::getConstructData(ConstructData& constructData)
     63{
     64    return getConstructData(this, constructData);
     65}
     66
     67ConstructType FunctionConstructor::getConstructData(JSCell*, ConstructData& constructData)
    6368{
    6469    constructData.native.function = constructWithFunctionConstructor;
  • trunk/Source/JavaScriptCore/runtime/FunctionConstructor.h

    r97006 r97016  
    5050        void finishCreation(ExecState*, FunctionPrototype*);
    5151        virtual ConstructType getConstructData(ConstructData&);
     52        static ConstructType getConstructData(JSCell*, ConstructData&);
    5253        virtual CallType getCallDataVirtual(CallData&);
    5354        static CallType getCallData(JSCell*, CallData&);
  • trunk/Source/JavaScriptCore/runtime/JSCell.cpp

    r97015 r97016  
    6666
    6767ConstructType JSCell::getConstructData(ConstructData&)
     68{
     69    return ConstructTypeNone;
     70}
     71
     72ConstructType JSCell::getConstructData(JSCell*, ConstructData&)
    6873{
    6974    return ConstructTypeNone;
  • trunk/Source/JavaScriptCore/runtime/JSCell.h

    r97015 r97016  
    7777        static CallType getCallData(JSCell*, CallData&);
    7878        virtual ConstructType getConstructData(ConstructData&);
     79        static ConstructType getConstructData(JSCell*, ConstructData&);
    7980
    8081        // Basic conversions.
  • trunk/Source/JavaScriptCore/runtime/JSFunction.cpp

    r97015 r97016  
    354354}
    355355
     356ConstructType JSFunction::getConstructData(ConstructData& constructData)
     357{
     358    return getConstructData(this, constructData);
     359}
     360
    356361// ECMA 13.2.2 [[Construct]]
    357 ConstructType JSFunction::getConstructData(ConstructData& constructData)
    358 {
    359     if (isHostFunction()) {
    360         constructData.native.function = nativeConstructor();
     362ConstructType JSFunction::getConstructData(JSCell* cell, ConstructData& constructData)
     363{
     364    JSFunction* thisObject = static_cast<JSFunction*>(cell);
     365    if (thisObject->isHostFunction()) {
     366        constructData.native.function = thisObject->nativeConstructor();
    361367        return ConstructTypeHost;
    362368    }
    363     constructData.js.functionExecutable = jsExecutable();
    364     constructData.js.scopeChain = scope();
     369    constructData.js.functionExecutable = thisObject->jsExecutable();
     370    constructData.js.scopeChain = thisObject->scope();
    365371    return ConstructTypeJS;
    366372}
  • trunk/Source/JavaScriptCore/runtime/JSFunction.h

    r97015 r97016  
    110110
    111111        virtual ConstructType getConstructData(ConstructData&);
     112        static ConstructType getConstructData(JSCell*, ConstructData&);
    112113        virtual CallType getCallDataVirtual(CallData&);
    113114        static CallType getCallData(JSCell*, CallData&);
  • trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.cpp

    r97006 r97016  
    5959ConstructType NativeErrorConstructor::getConstructData(ConstructData& constructData)
    6060{
     61    return getConstructData(this, constructData);
     62}
     63
     64ConstructType NativeErrorConstructor::getConstructData(JSCell*, ConstructData& constructData)
     65{
    6166    constructData.native.function = constructWithNativeErrorConstructor;
    6267    return ConstructTypeHost;
  • trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.h

    r97006 r97016  
    7070        static const unsigned StructureFlags = OverridesVisitChildren | InternalFunction::StructureFlags;
    7171        virtual ConstructType getConstructData(ConstructData&);
     72        static ConstructType getConstructData(JSCell*, ConstructData&);
    7273        virtual CallType getCallDataVirtual(CallData&);
    7374        static CallType getCallData(JSCell*, CallData&);
  • trunk/Source/JavaScriptCore/runtime/NumberConstructor.cpp

    r97015 r97016  
    123123ConstructType NumberConstructor::getConstructData(ConstructData& constructData)
    124124{
     125    return getConstructData(this, constructData);
     126}
     127
     128ConstructType NumberConstructor::getConstructData(JSCell*, ConstructData& constructData)
     129{
    125130    constructData.native.function = constructWithNumberConstructor;
    126131    return ConstructTypeHost;
  • trunk/Source/JavaScriptCore/runtime/NumberConstructor.h

    r97015 r97016  
    6060        NumberConstructor(JSGlobalObject*, Structure*);
    6161        virtual ConstructType getConstructData(ConstructData&);
     62        static ConstructType getConstructData(JSCell*, ConstructData&);
    6263        virtual CallType getCallDataVirtual(CallData&);
    6364        static CallType getCallData(JSCell*, CallData&);
  • trunk/Source/JavaScriptCore/runtime/ObjectConstructor.cpp

    r97015 r97016  
    122122ConstructType ObjectConstructor::getConstructData(ConstructData& constructData)
    123123{
     124    return getConstructData(this, constructData);
     125}
     126
     127ConstructType ObjectConstructor::getConstructData(JSCell*, ConstructData& constructData)
     128{
    124129    constructData.native.function = constructWithObjectConstructor;
    125130    return ConstructTypeHost;
  • trunk/Source/JavaScriptCore/runtime/ObjectConstructor.h

    r97015 r97016  
    5757        ObjectConstructor(JSGlobalObject*, Structure*);
    5858        virtual ConstructType getConstructData(ConstructData&);
     59        static ConstructType getConstructData(JSCell*, ConstructData&);
    5960        virtual CallType getCallDataVirtual(CallData&);
    6061        static CallType getCallData(JSCell*, CallData&);
  • trunk/Source/JavaScriptCore/runtime/RegExpConstructor.cpp

    r97015 r97016  
    357357ConstructType RegExpConstructor::getConstructData(ConstructData& constructData)
    358358{
     359    return getConstructData(this, constructData);
     360}
     361
     362ConstructType RegExpConstructor::getConstructData(JSCell*, ConstructData& constructData)
     363{
    359364    constructData.native.function = constructWithRegExpConstructor;
    360365    return ConstructTypeHost;
  • trunk/Source/JavaScriptCore/runtime/RegExpConstructor.h

    r97015 r97016  
    102102        RegExpConstructor(JSGlobalObject*, Structure*);
    103103        virtual ConstructType getConstructData(ConstructData&);
     104        static ConstructType getConstructData(JSCell*, ConstructData&);
    104105        virtual CallType getCallDataVirtual(CallData&);
    105106        static CallType getCallData(JSCell*, CallData&);
  • trunk/Source/JavaScriptCore/runtime/StringConstructor.cpp

    r97015 r97016  
    104104ConstructType StringConstructor::getConstructData(ConstructData& constructData)
    105105{
     106    return getConstructData(this, constructData);
     107}
     108
     109ConstructType StringConstructor::getConstructData(JSCell*, ConstructData& constructData)
     110{
    106111    constructData.native.function = constructWithStringConstructor;
    107112    return ConstructTypeHost;
  • trunk/Source/JavaScriptCore/runtime/StringConstructor.h

    r97015 r97016  
    5353        void finishCreation(ExecState*, StringPrototype*);
    5454        virtual ConstructType getConstructData(ConstructData&);
     55        static ConstructType getConstructData(JSCell*, ConstructData&);
    5556        virtual CallType getCallDataVirtual(CallData&);
    5657        static CallType getCallData(JSCell*, CallData&);
  • trunk/Source/WebCore/ChangeLog

    r97015 r97016  
     12011-10-08  Mark Hahnenberg  <mhahnenberg@apple.com>
     2
     3        Add static version of JSCell::getConstructData
     4        https://bugs.webkit.org/show_bug.cgi?id=69673
     5
     6        Reviewed by Geoffrey Garen.
     7
     8        No new tests.
     9
     10        Added static version of getConstructData to all classes that
     11        override it and changed the virtual versions to call the static
     12        versions.  This is the first step in de-virtualizing JSCell::getConstructData.
     13
     14        * bindings/js/JSAudioConstructor.cpp:
     15        (WebCore::JSAudioConstructor::getConstructData):
     16        * bindings/js/JSAudioConstructor.h:
     17        * bindings/js/JSImageConstructor.cpp:
     18        (WebCore::JSImageConstructor::getConstructData):
     19        * bindings/js/JSImageConstructor.h:
     20        * bindings/js/JSOptionConstructor.cpp:
     21        (WebCore::JSOptionConstructor::getConstructData):
     22        * bindings/js/JSOptionConstructor.h:
     23        * bindings/scripts/CodeGeneratorJS.pm:
     24        (GenerateConstructorDeclaration):
     25        (GenerateConstructorDefinition):
     26        * bindings/scripts/test/JS/JSTestInterface.cpp:
     27        (WebCore::JSTestInterfaceConstructor::getConstructData):
     28        * bridge/runtime_object.cpp:
     29        (JSC::Bindings::RuntimeObject::getConstructData):
     30        * bridge/runtime_object.h:
     31
    1322011-10-08  Mark Hahnenberg  <mhahnenberg@apple.com>
    233
  • trunk/Source/WebCore/bindings/js/JSAudioConstructor.cpp

    r95936 r97016  
    7878ConstructType JSAudioConstructor::getConstructData(ConstructData& constructData)
    7979{
     80    return getConstructData(this, constructData);
     81}
     82
     83ConstructType JSAudioConstructor::getConstructData(JSCell*, ConstructData& constructData)
     84{
    8085    constructData.native.function = constructAudio;
    8186    return ConstructTypeHost;
  • trunk/Source/WebCore/bindings/js/JSAudioConstructor.h

    r95250 r97016  
    5757        void finishCreation(JSC::ExecState*, JSDOMGlobalObject*);
    5858        virtual JSC::ConstructType getConstructData(JSC::ConstructData&);
     59        static JSC::ConstructType getConstructData(JSC::JSCell*, JSC::ConstructData&);
    5960    };
    6061
  • trunk/Source/WebCore/bindings/js/JSImageConstructor.cpp

    r95936 r97016  
    7777ConstructType JSImageConstructor::getConstructData(ConstructData& constructData)
    7878{
     79    return getConstructData(this, constructData);
     80}
     81
     82ConstructType JSImageConstructor::getConstructData(JSCell*, ConstructData& constructData)
     83{
    7984    constructData.native.function = constructImage;
    8085    return ConstructTypeHost;
  • trunk/Source/WebCore/bindings/js/JSImageConstructor.h

    r95250 r97016  
    4848        void finishCreation(JSC::ExecState*, JSDOMGlobalObject*);
    4949        virtual JSC::ConstructType getConstructData(JSC::ConstructData&);
     50        static JSC::ConstructType getConstructData(JSC::JSCell*, JSC::ConstructData&);
    5051    };
    5152
  • trunk/Source/WebCore/bindings/js/JSOptionConstructor.cpp

    r95936 r97016  
    7878ConstructType JSOptionConstructor::getConstructData(ConstructData& constructData)
    7979{
     80    return getConstructData(this, constructData);
     81}
     82
     83ConstructType JSOptionConstructor::getConstructData(JSCell*, ConstructData& constructData)
     84{
    8085    constructData.native.function = constructHTMLOptionElement;
    8186    return ConstructTypeHost;
  • trunk/Source/WebCore/bindings/js/JSOptionConstructor.h

    r95250 r97016  
    4949        void finishCreation(JSC::ExecState*, JSDOMGlobalObject*);
    5050        virtual JSC::ConstructType getConstructData(JSC::ConstructData&);
     51        static JSC::ConstructType getConstructData(JSC::JSCell*, JSC::ConstructData&);
    5152    };
    5253
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm

    r97006 r97016  
    31733173        push(@$outputArray, "    static JSC::EncodedJSValue JSC_HOST_CALL construct${className}(JSC::ExecState*);\n");
    31743174        push(@$outputArray, "    virtual JSC::ConstructType getConstructData(JSC::ConstructData&);\n");
     3175        push(@$outputArray, "    static JSC::ConstructType getConstructData(JSC::JSCell*, JSC::ConstructData&);\n");
    31753176    }
    31763177    push(@$outputArray, "};\n\n");
     
    32393240        push(@$outputArray, "ConstructType ${constructorClassName}::getConstructData(ConstructData& constructData)\n");
    32403241        push(@$outputArray, "{\n");
     3242        push(@$outputArray, "    return getConstructData(this, constructData);\n");
     3243        push(@$outputArray, "}\n\n");
     3244
     3245        push(@$outputArray, "ConstructType ${constructorClassName}::getConstructData(JSCell*, ConstructData& constructData)\n");
     3246        push(@$outputArray, "{\n");
    32413247        push(@$outputArray, "    constructData.native.function = construct${className};\n");
    32423248        push(@$outputArray, "    return ConstructTypeHost;\n");
  • trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp

    r95936 r97016  
    9898    static JSC::EncodedJSValue JSC_HOST_CALL constructJSTestInterface(JSC::ExecState*);
    9999    virtual JSC::ConstructType getConstructData(JSC::ConstructData&);
     100    static JSC::ConstructType getConstructData(JSC::JSCell*, JSC::ConstructData&);
    100101};
    101102
     
    134135ConstructType JSTestInterfaceConstructor::getConstructData(ConstructData& constructData)
    135136{
     137    return getConstructData(this, constructData);
     138}
     139
     140ConstructType JSTestInterfaceConstructor::getConstructData(JSCell*, ConstructData& constructData)
     141{
    136142    constructData.native.function = constructJSTestInterface;
    137143    return ConstructTypeHost;
  • trunk/Source/WebCore/bridge/runtime_object.cpp

    r97015 r97016  
    312312ConstructType RuntimeObject::getConstructData(ConstructData& constructData)
    313313{
    314     if (!m_instance)
     314    return getConstructData(this, constructData);
     315}
     316
     317ConstructType RuntimeObject::getConstructData(JSCell* cell, ConstructData& constructData)
     318{
     319    RuntimeObject* thisObject = static_cast<RuntimeObject*>(cell);
     320    if (!thisObject->m_instance)
    315321        return ConstructTypeNone;
    316322   
    317     RefPtr<Instance> instance = m_instance;
     323    RefPtr<Instance> instance = thisObject->m_instance;
    318324    if (!instance->supportsConstruct())
    319325        return ConstructTypeNone;
  • trunk/Source/WebCore/bridge/runtime_object.h

    r97015 r97016  
    5757    static CallType getCallData(JSCell*, CallData&);
    5858    virtual ConstructType getConstructData(ConstructData&);
     59    static ConstructType getConstructData(JSCell*, ConstructData&);
    5960
    6061    virtual void getOwnPropertyNames(ExecState*, PropertyNameArray&, EnumerationMode mode = ExcludeDontEnumProperties);
  • trunk/Source/WebKit2/ChangeLog

    r97015 r97016  
     12011-10-08  Mark Hahnenberg  <mhahnenberg@apple.com>
     2
     3        Add static version of JSCell::getConstructData
     4        https://bugs.webkit.org/show_bug.cgi?id=69673
     5
     6        Reviewed by Geoffrey Garen.
     7
     8        Added static version of getConstructData to all classes that
     9        override it and changed the virtual versions to call the static
     10        versions.  This is the first step in de-virtualizing JSCell::getConstructData.
     11
     12        * WebProcess/Plugins/Netscape/JSNPObject.cpp:
     13        (WebKit::JSNPObject::getConstructData):
     14        * WebProcess/Plugins/Netscape/JSNPObject.h:
     15
    1162011-10-08  Mark Hahnenberg  <mhahnenberg@apple.com>
    217
  • trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp

    r97015 r97016  
    244244ConstructType JSNPObject::getConstructData(ConstructData& constructData)
    245245{
    246     ASSERT_GC_OBJECT_INHERITS(this, &s_info);
    247     if (!m_npObject || !m_npObject->_class->construct)
     246    return getConstructData(this, constructData);
     247}
     248
     249ConstructType JSNPObject::getConstructData(JSCell* cell, ConstructData& constructData)
     250{
     251    JSNPObject* thisObject = static_cast<JSNPObject*>(cell);
     252    ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info);
     253    if (!thisObject->m_npObject || !thisObject->m_npObject->_class->construct)
    248254        return ConstructTypeNone;
    249255
  • trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h

    r97015 r97016  
    8383    static JSC::CallType getCallData(JSC::JSCell*, JSC::CallData&);
    8484    virtual JSC::ConstructType getConstructData(JSC::ConstructData&);
     85    static JSC::ConstructType getConstructData(JSC::JSCell*, JSC::ConstructData&);
    8586
    8687    virtual bool getOwnPropertySlot(JSC::ExecState*, const JSC::Identifier& propertyName, JSC::PropertySlot&);
Note: See TracChangeset for help on using the changeset viewer.