Changeset 96164 in webkit


Ignore:
Timestamp:
Sep 27, 2011 3:46:51 PM (13 years ago)
Author:
mhahnenberg@apple.com
Message:

Source/JavaScriptCore: Add static version of JSCell::getCallData
https://bugs.webkit.org/show_bug.cgi?id=68741

Reviewed by Darin Adler.

In this patch we just extract the bodies of the virtual getCallData methods
throughout the JSCell inheritance hierarchy out into static methods, which are
now called from the virtual methods. This is an intermediate step in trying to
move the virtual-ness of getCallData into our own method table stored in
ClassInfo. We need to convert the methods to static methods because static methods
can be represented as function pointers rather than pointers to member functions, and
function pointers are smaller and faster to call than pointers to member functions.

  • API/JSCallbackFunction.cpp:

(JSC::JSCallbackFunction::getCallDataVirtual):
(JSC::JSCallbackFunction::getCallData):

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

(JSC::::getCallDataVirtual):
(JSC::::getCallData):

  • API/JSObjectRef.cpp:

(JSObjectIsFunction):
(JSObjectCallAsFunction):

(JSC::Interpreter::privateExecute):

  • jit/JITStubs.cpp:

(JSC::DEFINE_STUB_FUNCTION):

  • runtime/ArrayConstructor.cpp:

(JSC::ArrayConstructor::getCallDataVirtual):
(JSC::ArrayConstructor::getCallData):

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

(JSC::BooleanConstructor::getCallDataVirtual):
(JSC::BooleanConstructor::getCallData):

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

(JSC::DateConstructor::getCallDataVirtual):
(JSC::DateConstructor::getCallData):

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

(JSC::StrictModeTypeErrorFunction::getCallDataVirtual):
(JSC::StrictModeTypeErrorFunction::getCallData):

  • runtime/ErrorConstructor.cpp:

(JSC::ErrorConstructor::getCallDataVirtual):
(JSC::ErrorConstructor::getCallData):

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

(JSC::FunctionConstructor::getCallDataVirtual):
(JSC::FunctionConstructor::getCallData):

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

(JSC::FunctionPrototype::getCallDataVirtual):
(JSC::FunctionPrototype::getCallData):

  • runtime/FunctionPrototype.h:
  • runtime/InternalFunction.h:
  • runtime/JSCell.cpp:

(JSC::JSCell::getCallDataVirtual):
(JSC::JSCell::getCallData):

  • runtime/JSCell.h:

(JSC::getCallData):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::getCallDataVirtual):
(JSC::JSFunction::getCallData):

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

(JSC::Stringifier::Stringifier):
(JSC::Stringifier::toJSON):
(JSC::Stringifier::appendStringifiedValue):

  • runtime/JSObject.cpp:

(JSC::JSObject::put):

  • runtime/NativeErrorConstructor.cpp:

(JSC::NativeErrorConstructor::getCallDataVirtual):
(JSC::NativeErrorConstructor::getCallData):

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

(JSC::NumberConstructor::getCallDataVirtual):
(JSC::NumberConstructor::getCallData):

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

(JSC::ObjectConstructor::getCallDataVirtual):
(JSC::ObjectConstructor::getCallData):

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

(JSC::jsTypeStringForValue):
(JSC::jsIsObjectType):
(JSC::jsIsFunctionType):

  • runtime/PropertySlot.cpp:

(JSC::PropertySlot::functionGetter):

  • runtime/RegExpConstructor.cpp:

(JSC::RegExpConstructor::getCallDataVirtual):
(JSC::RegExpConstructor::getCallData):

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

(JSC::StringConstructor::getCallDataVirtual):
(JSC::StringConstructor::getCallData):

  • runtime/StringConstructor.h:

Source/JavaScriptGlue: Add static version of JSCell::getCallData
https://bugs.webkit.org/show_bug.cgi?id=68741

Reviewed by Darin Adler.

In this patch we just extract the bodies of the virtual getCallData methods
throughout the JSCell inheritance hierarchy out into static methods, which are
now called from the virtual methods. This is an intermediate step in trying to
move the virtual-ness of getCallData into our own method table stored in
ClassInfo. We need to convert the methods to static methods because static methods
can be represented as function pointers rather than pointers to member functions, and
function pointers are smaller and faster to call than pointers to member functions.

  • JSValueWrapper.cpp:

(JSValueWrapper::JSObjectCallFunction):

  • UserObjectImp.cpp:

(UserObjectImp::getCallDataVirtual):
(UserObjectImp::getCallData):

  • UserObjectImp.h:

Source/WebCore: Add static version of JSCell::visitChildren
https://bugs.webkit.org/show_bug.cgi?id=68404

Reviewed by Darin Adler.

No new tests.

In this patch we just extract the bodies of the virtual visitChildren methods
throughout the JSCell inheritance hierarchy out into static methods, which are
now called from the virtual methods. This is an intermediate step in trying to
move the virtual-ness of visitChildren into our own custom vtable stored in
ClassInfo. We need to convert the methods to static methods in order to be
able to more easily store and refer to them in our custom vtable since normal
member methods store some implicit information in their types, making it
impossible to store them generically in ClassInfo.

  • WebCore.exp.in:
  • bindings/js/JSAttrCustom.cpp:

(WebCore::JSAttr::visitChildrenVirtual):
(WebCore::JSAttr::visitChildren):

  • bindings/js/JSAudioContextCustom.cpp:

(WebCore::JSAudioContext::visitChildrenVirtual):
(WebCore::JSAudioContext::visitChildren):

  • bindings/js/JSCSSRuleCustom.cpp:

(WebCore::JSCSSRule::visitChildrenVirtual):
(WebCore::JSCSSRule::visitChildren):

  • bindings/js/JSCSSStyleDeclarationCustom.cpp:

(WebCore::JSCSSStyleDeclaration::visitChildrenVirtual):
(WebCore::JSCSSStyleDeclaration::visitChildren):

  • bindings/js/JSCanvasRenderingContextCustom.cpp:

(WebCore::JSCanvasRenderingContext::visitChildrenVirtual):
(WebCore::JSCanvasRenderingContext::visitChildren):

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::visitChildrenVirtual):
(WebCore::JSDOMGlobalObject::visitChildren):

  • bindings/js/JSDOMGlobalObject.h:
  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::visitChildrenVirtual):
(WebCore::JSDOMWindow::visitChildren):

  • bindings/js/JSDOMWindowShell.cpp:

(WebCore::JSDOMWindowShell::visitChildrenVirtual):
(WebCore::JSDOMWindowShell::visitChildren):

  • bindings/js/JSDOMWindowShell.h:
  • bindings/js/JSJavaScriptAudioNodeCustom.cpp:

(WebCore::JSJavaScriptAudioNode::visitChildrenVirtual):
(WebCore::JSJavaScriptAudioNode::visitChildren):

  • bindings/js/JSMessageChannelCustom.cpp:

(WebCore::JSMessageChannel::visitChildrenVirtual):
(WebCore::JSMessageChannel::visitChildren):

  • bindings/js/JSMessagePortCustom.cpp:

(WebCore::JSMessagePort::visitChildrenVirtual):
(WebCore::JSMessagePort::visitChildren):

  • bindings/js/JSNamedNodeMapCustom.cpp:

(WebCore::JSNamedNodeMap::visitChildrenVirtual):
(WebCore::JSNamedNodeMap::visitChildren):

  • bindings/js/JSNodeCustom.cpp:

(WebCore::JSNode::visitChildrenVirtual):
(WebCore::JSNode::visitChildren):

  • bindings/js/JSNodeFilterCustom.cpp:

(WebCore::JSNodeFilter::visitChildrenVirtual):
(WebCore::JSNodeFilter::visitChildren):

  • bindings/js/JSNodeIteratorCustom.cpp:

(WebCore::JSNodeIterator::visitChildrenVirtual):
(WebCore::JSNodeIterator::visitChildren):

  • bindings/js/JSSVGElementInstanceCustom.cpp:

(WebCore::JSSVGElementInstance::visitChildrenVirtual):
(WebCore::JSSVGElementInstance::visitChildren):

  • bindings/js/JSSharedWorkerCustom.cpp:

(WebCore::JSSharedWorker::visitChildrenVirtual):
(WebCore::JSSharedWorker::visitChildren):

  • bindings/js/JSStyleSheetCustom.cpp:

(WebCore::JSStyleSheet::visitChildrenVirtual):
(WebCore::JSStyleSheet::visitChildren):

  • bindings/js/JSTreeWalkerCustom.cpp:

(WebCore::JSTreeWalker::visitChildrenVirtual):
(WebCore::JSTreeWalker::visitChildren):

  • bindings/js/JSWebGLRenderingContextCustom.cpp:

(WebCore::JSWebGLRenderingContext::visitChildrenVirtual):
(WebCore::JSWebGLRenderingContext::visitChildren):

  • bindings/js/JSWorkerContextCustom.cpp:

(WebCore::JSWorkerContext::visitChildrenVirtual):
(WebCore::JSWorkerContext::visitChildren):

  • bindings/js/JSXMLHttpRequestCustom.cpp:

(WebCore::JSXMLHttpRequest::visitChildrenVirtual):
(WebCore::JSXMLHttpRequest::visitChildren):

  • bindings/js/JSXPathResultCustom.cpp:

(WebCore::JSXPathResult::visitChildrenVirtual):
(WebCore::JSXPathResult::visitChildren):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
(GenerateImplementation):

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

(WebCore::JSTestObj::visitChildrenVirtual):
(WebCore::JSTestObj::visitChildren):

  • bindings/scripts/test/JS/JSTestObj.h:
  • bridge/qt/qt_instance.cpp:

(JSC::Bindings::QtRuntimeObject::visitChildrenVirtual):
(JSC::Bindings::QtRuntimeObject::visitChildren):

  • bridge/qt/qt_runtime.cpp:

(JSC::Bindings::QtRuntimeMetaMethod::visitChildrenVirtual):
(JSC::Bindings::QtRuntimeMetaMethod::visitChildren):

  • bridge/qt/qt_runtime.h:
  • workers/WorkerContext.h:

Source/WebKit/mac: Add static version of JSCell::getCallData
https://bugs.webkit.org/show_bug.cgi?id=68741

Reviewed by Darin Adler.

In this patch we just extract the bodies of the virtual getCallData methods
throughout the JSCell inheritance hierarchy out into static methods, which are
now called from the virtual methods. This is an intermediate step in trying to
move the virtual-ness of getCallData into our own method table stored in
ClassInfo. We need to convert the methods to static methods because static methods
can be represented as function pointers rather than pointers to member functions, and
function pointers are smaller and faster to call than pointers to member functions.

  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::NetscapePluginInstanceProxy::invokeDefault):

Source/WebKit2: Add static version of JSCell::getCallData
https://bugs.webkit.org/show_bug.cgi?id=68741

Reviewed by Darin Adler.

In this patch we just extract the bodies of the virtual getCallData methods
throughout the JSCell inheritance hierarchy out into static methods, which are
now called from the virtual methods. This is an intermediate step in trying to
move the virtual-ness of getCallData into our own method table stored in
ClassInfo. We need to convert the methods to static methods because static methods
can be represented as function pointers rather than pointers to member functions, and
function pointers are smaller and faster to call than pointers to member functions.

  • WebProcess/Plugins/Netscape/JSNPMethod.cpp:

(WebKit::JSNPMethod::getCallDataVirtual):
(WebKit::JSNPMethod::getCallData):

  • WebProcess/Plugins/Netscape/JSNPMethod.h:
  • WebProcess/Plugins/Netscape/JSNPObject.cpp:

(WebKit::JSNPObject::getCallDataVirtual):
(WebKit::JSNPObject::getCallData):

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

Legend:

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

    r95936 r96164  
    7878}
    7979
    80 CallType JSCallbackFunction::getCallData(CallData& callData)
     80CallType JSCallbackFunction::getCallDataVirtual(CallData& callData)
     81{
     82    return getCallData(this, callData);
     83}
     84
     85CallType JSCallbackFunction::getCallData(JSCell*, CallData& callData)
    8186{
    8287    callData.native.function = call;
  • trunk/Source/JavaScriptCore/API/JSCallbackFunction.h

    r95108 r96164  
    5757
    5858private:
    59     virtual CallType getCallData(CallData&);
     59    virtual CallType getCallDataVirtual(CallData&);
     60    static CallType getCallData(JSCell*, CallData&);
    6061
    6162    static EncodedJSValue JSC_HOST_CALL call(ExecState*);
  • trunk/Source/JavaScriptCore/API/JSCallbackObject.h

    r95849 r96164  
    195195
    196196    virtual ConstructType getConstructData(ConstructData&);
    197     virtual CallType getCallData(CallData&);
     197    virtual CallType getCallDataVirtual(CallData&);
     198    static CallType getCallData(JSCell*, CallData&);
    198199
    199200    virtual void visitChildrenVirtual(SlotVisitor& visitor)
  • trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h

    r95250 r96164  
    373373
    374374template <class Parent>
    375 CallType JSCallbackObject<Parent>::getCallData(CallData& callData)
    376 {
    377     for (JSClassRef jsClass = classRef(); jsClass; jsClass = jsClass->parentClass) {
     375CallType JSCallbackObject<Parent>::getCallDataVirtual(CallData& callData)
     376{
     377    return getCallData(this, callData);
     378}
     379
     380template <class Parent>
     381CallType JSCallbackObject<Parent>::getCallData(JSCell* cell, CallData& callData)
     382{
     383    JSCallbackObject* thisObject = static_cast<JSCallbackObject*>(cell);
     384    for (JSClassRef jsClass = thisObject->classRef(); jsClass; jsClass = jsClass->parentClass) {
    378385        if (jsClass->callAsFunction) {
    379386            callData.native.function = call;
  • trunk/Source/JavaScriptCore/API/JSObjectRef.cpp

    r94701 r96164  
    417417{
    418418    CallData callData;
    419     return toJS(object)->getCallData(callData) != CallTypeNone;
     419    return toJS(object)->getCallDataVirtual(callData) != CallTypeNone;
    420420}
    421421
     
    436436
    437437    CallData callData;
    438     CallType callType = jsObject->getCallData(callData);
     438    CallType callType = jsObject->getCallDataVirtual(callData);
    439439    if (callType == CallTypeNone)
    440440        return 0;
  • trunk/Source/JavaScriptCore/ChangeLog

    r96151 r96164  
     12011-09-27  Mark Hahnenberg  <mhahnenberg@apple.com>
     2
     3        Add static version of JSCell::getCallData
     4        https://bugs.webkit.org/show_bug.cgi?id=68741
     5
     6        Reviewed by Darin Adler.
     7
     8        In this patch we just extract the bodies of the virtual getCallData methods
     9        throughout the JSCell inheritance hierarchy out into static methods, which are
     10        now called from the virtual methods.  This is an intermediate step in trying to
     11        move the virtual-ness of getCallData into our own method table stored in
     12        ClassInfo.  We need to convert the methods to static methods because static methods
     13        can be represented as function pointers rather than pointers to member functions, and
     14        function pointers are smaller and faster to call than pointers to member functions.
     15
     16        * API/JSCallbackFunction.cpp:
     17        (JSC::JSCallbackFunction::getCallDataVirtual):
     18        (JSC::JSCallbackFunction::getCallData):
     19        * API/JSCallbackFunction.h:
     20        * API/JSCallbackObject.h:
     21        * API/JSCallbackObjectFunctions.h:
     22        (JSC::::getCallDataVirtual):
     23        (JSC::::getCallData):
     24        * API/JSObjectRef.cpp:
     25        (JSObjectIsFunction):
     26        (JSObjectCallAsFunction):
     27        * JavaScriptCore.exp:
     28        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
     29        * interpreter/Interpreter.cpp:
     30        (JSC::Interpreter::privateExecute):
     31        * jit/JITStubs.cpp:
     32        (JSC::DEFINE_STUB_FUNCTION):
     33        * runtime/ArrayConstructor.cpp:
     34        (JSC::ArrayConstructor::getCallDataVirtual):
     35        (JSC::ArrayConstructor::getCallData):
     36        * runtime/ArrayConstructor.h:
     37        * runtime/BooleanConstructor.cpp:
     38        (JSC::BooleanConstructor::getCallDataVirtual):
     39        (JSC::BooleanConstructor::getCallData):
     40        * runtime/BooleanConstructor.h:
     41        * runtime/DateConstructor.cpp:
     42        (JSC::DateConstructor::getCallDataVirtual):
     43        (JSC::DateConstructor::getCallData):
     44        * runtime/DateConstructor.h:
     45        * runtime/Error.cpp:
     46        (JSC::StrictModeTypeErrorFunction::getCallDataVirtual):
     47        (JSC::StrictModeTypeErrorFunction::getCallData):
     48        * runtime/ErrorConstructor.cpp:
     49        (JSC::ErrorConstructor::getCallDataVirtual):
     50        (JSC::ErrorConstructor::getCallData):
     51        * runtime/ErrorConstructor.h:
     52        * runtime/FunctionConstructor.cpp:
     53        (JSC::FunctionConstructor::getCallDataVirtual):
     54        (JSC::FunctionConstructor::getCallData):
     55        * runtime/FunctionConstructor.h:
     56        * runtime/FunctionPrototype.cpp:
     57        (JSC::FunctionPrototype::getCallDataVirtual):
     58        (JSC::FunctionPrototype::getCallData):
     59        * runtime/FunctionPrototype.h:
     60        * runtime/InternalFunction.h:
     61        * runtime/JSCell.cpp:
     62        (JSC::JSCell::getCallDataVirtual):
     63        (JSC::JSCell::getCallData):
     64        * runtime/JSCell.h:
     65        (JSC::getCallData):
     66        * runtime/JSFunction.cpp:
     67        (JSC::JSFunction::getCallDataVirtual):
     68        (JSC::JSFunction::getCallData):
     69        * runtime/JSFunction.h:
     70        * runtime/JSONObject.cpp:
     71        (JSC::Stringifier::Stringifier):
     72        (JSC::Stringifier::toJSON):
     73        (JSC::Stringifier::appendStringifiedValue):
     74        * runtime/JSObject.cpp:
     75        (JSC::JSObject::put):
     76        * runtime/NativeErrorConstructor.cpp:
     77        (JSC::NativeErrorConstructor::getCallDataVirtual):
     78        (JSC::NativeErrorConstructor::getCallData):
     79        * runtime/NativeErrorConstructor.h:
     80        * runtime/NumberConstructor.cpp:
     81        (JSC::NumberConstructor::getCallDataVirtual):
     82        (JSC::NumberConstructor::getCallData):
     83        * runtime/NumberConstructor.h:
     84        * runtime/ObjectConstructor.cpp:
     85        (JSC::ObjectConstructor::getCallDataVirtual):
     86        (JSC::ObjectConstructor::getCallData):
     87        * runtime/ObjectConstructor.h:
     88        * runtime/Operations.cpp:
     89        (JSC::jsTypeStringForValue):
     90        (JSC::jsIsObjectType):
     91        (JSC::jsIsFunctionType):
     92        * runtime/PropertySlot.cpp:
     93        (JSC::PropertySlot::functionGetter):
     94        * runtime/RegExpConstructor.cpp:
     95        (JSC::RegExpConstructor::getCallDataVirtual):
     96        (JSC::RegExpConstructor::getCallData):
     97        * runtime/RegExpConstructor.h:
     98        * runtime/StringConstructor.cpp:
     99        (JSC::StringConstructor::getCallDataVirtual):
     100        (JSC::StringConstructor::getCallData):
     101        * runtime/StringConstructor.h:
     102
    11032011-09-27  Tim Horton  <timothy_horton@apple.com>
    2104
  • trunk/Source/JavaScriptCore/JavaScriptCore.exp

    r96146 r96164  
    253253__ZN3JSC4Yarr9interpretEPNS0_15BytecodePatternERKNS_7UStringEjjPi
    254254__ZN3JSC4callEPNS_9ExecStateENS_7JSValueENS_8CallTypeERKNS_8CallDataES2_RKNS_7ArgListE
    255 __ZN3JSC6JSCell11getCallDataERNS_8CallDataE
    256255__ZN3JSC6JSCell14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
    257256__ZN3JSC6JSCell14deletePropertyEPNS_9ExecStateEj
    258257__ZN3JSC6JSCell16getConstructDataERNS_13ConstructDataE
     258__ZN3JSC6JSCell18getCallDataVirtualERNS_8CallDataE
    259259__ZN3JSC6JSCell18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
    260260__ZN3JSC6JSCell18getOwnPropertySlotEPNS_9ExecStateEjRNS_12PropertySlotE
  • trunk/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def

    r96146 r96164  
    187187    ?get@Structure@JSC@@QAEIAAVJSGlobalData@2@ABVIdentifier@2@AAIAAPAVJSCell@2@@Z
    188188    ?get@Structure@JSC@@QAEIAAVJSGlobalData@2@PAVStringImpl@WTF@@AAIAAPAVJSCell@2@@Z
    189     ?getCallData@JSCell@JSC@@UAE?AW4CallType@2@AATCallData@2@@Z
     189    ?getCallDataVirtual@JSCell@JSC@@UAE?AW4CallType@2@AATCallData@2@@Z
    190190    ?getConstructData@JSCell@JSC@@UAE?AW4ConstructType@2@AATConstructData@2@@Z
    191191    ?getObject@JSCell@JSC@@QAEPAVJSObject@2@XZ
  • trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp

    r96146 r96164  
    28302830                        JSObject* getter = getterSetter->getter();
    28312831                        CallData callData;
    2832                         CallType callType = getter->getCallData(callData);
     2832                        CallType callType = getter->getCallDataVirtual(callData);
    28332833                        JSValue result = call(callFrame, getter, callType, callData, asObject(baseCell), ArgList());
    28342834                        CHECK_FOR_EXCEPTION();
     
    29652965                    JSObject* getter = getterSetter->getter();
    29662966                    CallData callData;
    2967                     CallType callType = getter->getCallData(callData);
     2967                    CallType callType = getter->getCallDataVirtual(callData);
    29682968                    JSValue result = call(callFrame, getter, callType, callData, baseObject, ArgList());
    29692969                    CHECK_FOR_EXCEPTION();
     
    30733073                            JSObject* getter = getterSetter->getter();
    30743074                            CallData callData;
    3075                             CallType callType = getter->getCallData(callData);
     3075                            CallType callType = getter->getCallDataVirtual(callData);
    30763076                            JSValue result = call(callFrame, getter, callType, callData, baseValue, ArgList());
    30773077                            CHECK_FOR_EXCEPTION();
  • trunk/Source/JavaScriptCore/jit/JITStubs.cpp

    r95901 r96164  
    17561756    JSObject* getter = asObject(getterSetter->getter());
    17571757    CallData callData;
    1758     CallType callType = getter->getCallData(callData);
     1758    CallType callType = getter->getCallDataVirtual(callData);
    17591759    JSValue result = call(callFrame, getter, callType, callData, stackFrame.args[1].jsObject(), ArgList());
    17601760    if (callFrame->hadException())
     
    21592159#if !ASSERT_DISABLED
    21602160    CallData callData;
    2161     ASSERT(stackFrame.callFrame->callee()->getCallData(callData) == CallTypeJS);
     2161    ASSERT(stackFrame.callFrame->callee()->getCallDataVirtual(callData) == CallTypeJS);
    21622162#endif
    21632163   
  • trunk/Source/JavaScriptCore/runtime/ArrayConstructor.cpp

    r95936 r96164  
    110110}
    111111
    112 CallType ArrayConstructor::getCallData(CallData& callData)
     112CallType ArrayConstructor::getCallDataVirtual(CallData& callData)
     113{
     114    return getCallData(this, callData);
     115}
     116
     117CallType ArrayConstructor::getCallData(JSCell*, CallData& callData)
    113118{
    114119    // equivalent to 'new Array(....)'
  • trunk/Source/JavaScriptCore/runtime/ArrayConstructor.h

    r95108 r96164  
    5656
    5757        virtual ConstructType getConstructData(ConstructData&);
    58         virtual CallType getCallData(CallData&);
     58        virtual CallType getCallDataVirtual(CallData&);
     59        static CallType getCallData(JSCell*, CallData&);
    5960    };
    6061
  • trunk/Source/JavaScriptCore/runtime/BooleanConstructor.cpp

    r95108 r96164  
    6969}
    7070
    71 CallType BooleanConstructor::getCallData(CallData& callData)
     71CallType BooleanConstructor::getCallDataVirtual(CallData& callData)
     72{
     73    return getCallData(this, callData);
     74}
     75
     76CallType BooleanConstructor::getCallData(JSCell*, CallData& callData)
    7277{
    7378    callData.native.function = callBooleanConstructor;
  • trunk/Source/JavaScriptCore/runtime/BooleanConstructor.h

    r95108 r96164  
    4545        BooleanConstructor(JSGlobalObject*, Structure*);
    4646        virtual ConstructType getConstructData(ConstructData&);
    47         virtual CallType getCallData(CallData&);
     47        virtual CallType getCallDataVirtual(CallData&);
     48        static CallType getCallData(JSCell*, CallData&);
    4849    };
    4950
  • trunk/Source/JavaScriptCore/runtime/DateConstructor.cpp

    r95936 r96164  
    177177}
    178178
    179 CallType DateConstructor::getCallData(CallData& callData)
     179CallType DateConstructor::getCallDataVirtual(CallData& callData)
     180{
     181    return getCallData(this, callData);
     182}
     183
     184CallType DateConstructor::getCallData(JSCell*, CallData& callData)
    180185{
    181186    callData.native.function = callDate;
  • trunk/Source/JavaScriptCore/runtime/DateConstructor.h

    r95108 r96164  
    5353        DateConstructor(JSGlobalObject*, Structure*);
    5454        virtual ConstructType getConstructData(ConstructData&);
    55         virtual CallType getCallData(CallData&);
     55        virtual CallType getCallDataVirtual(CallData&);
     56        static CallType getCallData(JSCell*, CallData&);
    5657
    5758        virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&);
  • trunk/Source/JavaScriptCore/runtime/Error.cpp

    r96146 r96164  
    202202    }
    203203
    204     CallType getCallData(CallData& callData)
     204    CallType getCallDataVirtual(CallData& callData)
     205    {
     206        return getCallData(this, callData);
     207    }
     208
     209    CallType getCallData(JSCell*, CallData& callData)
    205210    {
    206211        callData.native.function = callThrowTypeError;
  • trunk/Source/JavaScriptCore/runtime/ErrorConstructor.cpp

    r95108 r96164  
    6565}
    6666
    67 CallType ErrorConstructor::getCallData(CallData& callData)
     67CallType ErrorConstructor::getCallDataVirtual(CallData& callData)
     68{
     69    return getCallData(this, callData);
     70}
     71
     72CallType ErrorConstructor::getCallData(JSCell*, CallData& callData)
    6873{
    6974    callData.native.function = callErrorConstructor;
  • trunk/Source/JavaScriptCore/runtime/ErrorConstructor.h

    r95108 r96164  
    4646        ErrorConstructor(JSGlobalObject*, Structure*);
    4747        virtual ConstructType getConstructData(ConstructData&);
    48         virtual CallType getCallData(CallData&);
     48        virtual CallType getCallDataVirtual(CallData&);
     49        static CallType getCallData(JSCell*, CallData&);
    4950    };
    5051
  • trunk/Source/JavaScriptCore/runtime/FunctionConstructor.cpp

    r95108 r96164  
    7070}
    7171
     72CallType FunctionConstructor::getCallDataVirtual(CallData& callData)
     73{
     74    return getCallData(this, callData);
     75}
     76
    7277// ECMA 15.3.1 The Function Constructor Called as a Function
    73 CallType FunctionConstructor::getCallData(CallData& callData)
     78CallType FunctionConstructor::getCallData(JSCell*, CallData& callData)
    7479{
    7580    callData.native.function = callFunctionConstructor;
  • trunk/Source/JavaScriptCore/runtime/FunctionConstructor.h

    r95108 r96164  
    4343        void finishCreation(ExecState*, FunctionPrototype*);
    4444        virtual ConstructType getConstructData(ConstructData&);
    45         virtual CallType getCallData(CallData&);
     45        virtual CallType getCallDataVirtual(CallData&);
     46        static CallType getCallData(JSCell*, CallData&);
    4647    };
    4748
  • trunk/Source/JavaScriptCore/runtime/FunctionPrototype.cpp

    r95764 r96164  
    7171}
    7272
     73CallType FunctionPrototype::getCallDataVirtual(CallData& callData)
     74{
     75    return getCallData(this, callData);
     76}
     77
    7378// ECMA 15.3.4
    74 CallType FunctionPrototype::getCallData(CallData& callData)
     79CallType FunctionPrototype::getCallData(JSCell*, CallData& callData)
    7580{
    7681    callData.native.function = callFunctionPrototype;
  • trunk/Source/JavaScriptCore/runtime/FunctionPrototype.h

    r95751 r96164  
    4949    private:
    5050        FunctionPrototype(JSGlobalObject*, Structure*);
    51         virtual CallType getCallData(CallData&);
     51        virtual CallType getCallDataVirtual(CallData&);
     52        static CallType getCallData(JSCell*, CallData&);
    5253    };
    5354
  • trunk/Source/JavaScriptCore/runtime/InternalFunction.h

    r94929 r96164  
    5858
    5959    private:
    60         virtual CallType getCallData(CallData&) = 0;
     60        virtual CallType getCallDataVirtual(CallData&) = 0;
    6161
    6262        virtual void vtableAnchor();
  • trunk/Source/JavaScriptCore/runtime/JSCell.cpp

    r96143 r96164  
    5555}
    5656
    57 CallType JSCell::getCallData(CallData&)
     57CallType JSCell::getCallDataVirtual(CallData& callData)
     58{
     59    return getCallData(this, callData);
     60}
     61
     62CallType JSCell::getCallData(JSCell*, CallData&)
    5863{
    5964    return CallTypeNone;
  • trunk/Source/JavaScriptCore/runtime/JSCell.h

    r96143 r96164  
    7474        const JSObject* getObject() const; // NULL if not an object
    7575       
    76         virtual CallType getCallData(CallData&);
     76        virtual CallType getCallDataVirtual(CallData&);
     77        static CallType getCallData(JSCell*, CallData&);
    7778        virtual ConstructType getConstructData(ConstructData&);
    7879
     
    236237    inline CallType getCallData(JSValue value, CallData& callData)
    237238    {
    238         CallType result = value.isCell() ? value.asCell()->getCallData(callData) : CallTypeNone;
     239        CallType result = value.isCell() ? value.asCell()->getCallDataVirtual(callData) : CallTypeNone;
    239240        ASSERT(result == CallTypeNone || value.isValidCallee());
    240241        return result;
  • trunk/Source/JavaScriptCore/runtime/JSFunction.cpp

    r95936 r96164  
    170170}
    171171
    172 CallType JSFunction::getCallData(CallData& callData)
    173 {
    174     if (isHostFunction()) {
    175         callData.native.function = nativeFunction();
     172CallType JSFunction::getCallDataVirtual(CallData& callData)
     173{
     174    return getCallData(this, callData);
     175}
     176
     177CallType JSFunction::getCallData(JSCell* cell, CallData& callData)
     178{
     179    JSFunction* thisObject = static_cast<JSFunction*>(cell);
     180    if (thisObject->isHostFunction()) {
     181        callData.native.function = thisObject->nativeFunction();
    176182        return CallTypeHost;
    177183    }
    178     callData.js.functionExecutable = jsExecutable();
    179     callData.js.scopeChain = scope();
     184    callData.js.functionExecutable = thisObject->jsExecutable();
     185    callData.js.scopeChain = thisObject->scope();
    180186    return CallTypeJS;
    181187}
  • trunk/Source/JavaScriptCore/runtime/JSFunction.h

    r95849 r96164  
    110110
    111111        virtual ConstructType getConstructData(ConstructData&);
    112         virtual CallType getCallData(CallData&);
     112        virtual CallType getCallDataVirtual(CallData&);
     113        static CallType getCallData(JSCell*, CallData&);
    113114
    114115        static inline size_t offsetOfScopeChain()
  • trunk/Source/JavaScriptCore/runtime/JSONObject.cpp

    r95936 r96164  
    247247    }
    248248
    249     m_replacerCallType = m_replacer.asObject()->getCallData(m_replacerCallData);
     249    m_replacerCallType = m_replacer.asObject()->getCallDataVirtual(m_replacerCallData);
    250250}
    251251
     
    338338    JSObject* object = asObject(toJSONFunction);
    339339    CallData callData;
    340     CallType callType = object->getCallData(callData);
     340    CallType callType = object->getCallDataVirtual(callData);
    341341    if (callType == CallTypeNone)
    342342        return value;
     
    402402
    403403    CallData callData;
    404     if (object->getCallData(callData) != CallTypeNone) {
     404    if (object->getCallDataVirtual(callData) != CallTypeNone) {
    405405        if (holder->inherits(&JSArray::s_info)) {
    406406            builder.append("null");
  • trunk/Source/JavaScriptCore/runtime/JSObject.cpp

    r96143 r96164  
    159159               
    160160                CallData callData;
    161                 CallType callType = setterFunc->getCallData(callData);
     161                CallType callType = setterFunc->getCallDataVirtual(callData);
    162162                MarkedArgumentBuffer args;
    163163                args.append(value);
  • trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.cpp

    r95936 r96164  
    7575}
    7676
    77 CallType NativeErrorConstructor::getCallData(CallData& callData)
     77CallType NativeErrorConstructor::getCallDataVirtual(CallData& callData)
     78{
     79    return getCallData(this, callData);
     80}
     81
     82CallType NativeErrorConstructor::getCallData(JSCell*, CallData& callData)
    7883{
    7984    callData.native.function = callNativeErrorConstructor;
  • trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.h

    r95849 r96164  
    7070        static const unsigned StructureFlags = OverridesVisitChildren | InternalFunction::StructureFlags;
    7171        virtual ConstructType getConstructData(ConstructData&);
    72         virtual CallType getCallData(CallData&);
     72        virtual CallType getCallDataVirtual(CallData&);
     73        static CallType getCallData(JSCell*, CallData&);
    7374        virtual void visitChildrenVirtual(SlotVisitor&);
    7475        static void visitChildren(JSCell*, SlotVisitor&);
  • trunk/Source/JavaScriptCore/runtime/NumberConstructor.cpp

    r95936 r96164  
    128128}
    129129
    130 CallType NumberConstructor::getCallData(CallData& callData)
     130CallType NumberConstructor::getCallDataVirtual(CallData& callData)
     131{
     132    return getCallData(this, callData);
     133}
     134
     135CallType NumberConstructor::getCallData(JSCell*, CallData& callData)
    131136{
    132137    callData.native.function = callNumberConstructor;
  • trunk/Source/JavaScriptCore/runtime/NumberConstructor.h

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

    r95936 r96164  
    127127}
    128128
    129 CallType ObjectConstructor::getCallData(CallData& callData)
     129CallType ObjectConstructor::getCallDataVirtual(CallData& callData)
     130{
     131    return getCallData(this, callData);
     132}
     133
     134CallType ObjectConstructor::getCallData(JSCell*, CallData& callData)
    130135{
    131136    callData.native.function = callObjectConstructor;
  • trunk/Source/JavaScriptCore/runtime/ObjectConstructor.h

    r95108 r96164  
    5656        ObjectConstructor(JSGlobalObject*, Structure*);
    5757        virtual ConstructType getConstructData(ConstructData&);
    58         virtual CallType getCallData(CallData&);
     58        virtual CallType getCallDataVirtual(CallData&);
     59        static CallType getCallData(JSCell*, CallData&);
    5960    };
    6061
  • trunk/Source/JavaScriptCore/runtime/Operations.cpp

    r95326 r96164  
    7575            return jsNontrivialString(callFrame, "undefined");
    7676        CallData callData;
    77         if (asObject(v)->getCallData(callData) != CallTypeNone)
     77        if (asObject(v)->getCallDataVirtual(callData) != CallTypeNone)
    7878            return jsNontrivialString(callFrame, "function");
    7979    }
     
    9393            return false;
    9494        CallData callData;
    95         if (asObject(v)->getCallData(callData) != CallTypeNone)
     95        if (asObject(v)->getCallDataVirtual(callData) != CallTypeNone)
    9696            return false;
    9797    }
     
    103103    if (v.isObject()) {
    104104        CallData callData;
    105         if (asObject(v)->getCallData(callData) != CallTypeNone)
     105        if (asObject(v)->getCallDataVirtual(callData) != CallTypeNone)
    106106            return true;
    107107    }
  • trunk/Source/JavaScriptCore/runtime/PropertySlot.cpp

    r91095 r96164  
    3434
    3535    CallData callData;
    36     CallType callType = m_data.getterFunc->getCallData(callData);
     36    CallType callType = m_data.getterFunc->getCallDataVirtual(callData);
    3737   
    3838    // Only objects can have accessor properties.
  • trunk/Source/JavaScriptCore/runtime/RegExpConstructor.cpp

    r95936 r96164  
    358358}
    359359
    360 CallType RegExpConstructor::getCallData(CallData& callData)
     360CallType RegExpConstructor::getCallDataVirtual(CallData& callData)
     361{
     362    return getCallData(this, callData);
     363}
     364
     365CallType RegExpConstructor::getCallData(JSCell*, CallData& callData)
    361366{
    362367    callData.native.function = callRegExpConstructor;
  • trunk/Source/JavaScriptCore/runtime/RegExpConstructor.h

    r95108 r96164  
    9999        RegExpConstructor(JSGlobalObject*, Structure*);
    100100        virtual ConstructType getConstructData(ConstructData&);
    101         virtual CallType getCallData(CallData&);
     101        virtual CallType getCallDataVirtual(CallData&);
     102        static CallType getCallData(JSCell*, CallData&);
    102103
    103104        OwnPtr<RegExpConstructorPrivate> d;
  • trunk/Source/JavaScriptCore/runtime/StringConstructor.cpp

    r95936 r96164  
    110110}
    111111
    112 CallType StringConstructor::getCallData(CallData& callData)
     112CallType StringConstructor::getCallDataVirtual(CallData& callData)
     113{
     114    return getCallData(this, callData);
     115}
     116
     117CallType StringConstructor::getCallData(JSCell*, CallData& callData)
    113118{
    114119    callData.native.function = callStringConstructor;
  • trunk/Source/JavaScriptCore/runtime/StringConstructor.h

    r95108 r96164  
    5353        void finishCreation(ExecState*, StringPrototype*);
    5454        virtual ConstructType getConstructData(ConstructData&);
    55         virtual CallType getCallData(CallData&);
     55        virtual CallType getCallDataVirtual(CallData&);
     56        static CallType getCallData(JSCell*, CallData&);
    5657
    5758        virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&);
  • trunk/Source/JavaScriptGlue/ChangeLog

    r95936 r96164  
     12011-09-27  Mark Hahnenberg  <mhahnenberg@apple.com>
     2
     3        Add static version of JSCell::getCallData
     4        https://bugs.webkit.org/show_bug.cgi?id=68741
     5
     6        Reviewed by Darin Adler.
     7
     8        In this patch we just extract the bodies of the virtual getCallData methods
     9        throughout the JSCell inheritance hierarchy out into static methods, which are
     10        now called from the virtual methods.  This is an intermediate step in trying to
     11        move the virtual-ness of getCallData into our own method table stored in
     12        ClassInfo.  We need to convert the methods to static methods because static methods
     13        can be represented as function pointers rather than pointers to member functions, and
     14        function pointers are smaller and faster to call than pointers to member functions.
     15
     16        * JSValueWrapper.cpp:
     17        (JSValueWrapper::JSObjectCallFunction):
     18        * UserObjectImp.cpp:
     19        (UserObjectImp::getCallDataVirtual):
     20        (UserObjectImp::getCallData):
     21        * UserObjectImp.h:
     22
    1232011-09-25  Mark Hahnenberg  <mhahnenberg@apple.com>
    224
  • trunk/Source/JavaScriptGlue/JSValueWrapper.cpp

    r78634 r96164  
    164164
    165165        CallData callData;
    166         CallType callType = objValue->getCallData(callData);
     166        CallType callType = objValue->getCallDataVirtual(callData);
    167167        if (callType == CallTypeNone)
    168168            return 0;
  • trunk/Source/JavaScriptGlue/UserObjectImp.cpp

    r95936 r96164  
    4747}
    4848
    49 CallType UserObjectImp::getCallData(CallData& callData)
    50 {
    51     return fJSUserObject ? fJSUserObject->getCallData(callData) : CallTypeNone;
     49CallType UserObjectImp::getCallDataVirtual(CallData& callData)
     50{
     51    return getCallData(this, callData);
     52}
     53
     54CallType UserObjectImp::getCallData(JSCell* cell, CallData& callData)
     55{
     56    UserObjectImp* thisObject = static_cast<UserObjectImp*>(cell);
     57    return thisObject->fJSUserObject ? thisObject->fJSUserObject->getCallData(callData) : CallTypeNone;
    5258}
    5359
  • trunk/Source/JavaScriptGlue/UserObjectImp.h

    r95849 r96164  
    5050    static const ClassInfo s_info;
    5151
    52     virtual CallType getCallData(CallData&);
     52    virtual CallType getCallDataVirtual(CallData&);
     53    static CallType getCallData(JSCell*, CallData&);
    5354
    5455    virtual void getOwnPropertyNames(ExecState*, PropertyNameArray&, EnumerationMode mode = ExcludeDontEnumProperties);
  • trunk/Source/WebCore/ChangeLog

    r96163 r96164  
     12011-09-23  Mark Hahnenberg  <mhahnenberg@apple.com>
     2
     3        Add static version of JSCell::visitChildren
     4        https://bugs.webkit.org/show_bug.cgi?id=68404
     5
     6        Reviewed by Darin Adler.
     7
     8        No new tests.
     9
     10        In this patch we just extract the bodies of the virtual visitChildren methods
     11        throughout the JSCell inheritance hierarchy out into static methods, which are
     12        now called from the virtual methods.  This is an intermediate step in trying to
     13        move the virtual-ness of visitChildren into our own custom vtable stored in
     14        ClassInfo.  We need to convert the methods to static methods in order to be
     15        able to more easily store and refer to them in our custom vtable since normal
     16        member methods store some implicit information in their types, making it
     17        impossible to store them generically in ClassInfo.
     18
     19        * WebCore.exp.in:
     20        * bindings/js/JSAttrCustom.cpp:
     21        (WebCore::JSAttr::visitChildrenVirtual):
     22        (WebCore::JSAttr::visitChildren):
     23        * bindings/js/JSAudioContextCustom.cpp:
     24        (WebCore::JSAudioContext::visitChildrenVirtual):
     25        (WebCore::JSAudioContext::visitChildren):
     26        * bindings/js/JSCSSRuleCustom.cpp:
     27        (WebCore::JSCSSRule::visitChildrenVirtual):
     28        (WebCore::JSCSSRule::visitChildren):
     29        * bindings/js/JSCSSStyleDeclarationCustom.cpp:
     30        (WebCore::JSCSSStyleDeclaration::visitChildrenVirtual):
     31        (WebCore::JSCSSStyleDeclaration::visitChildren):
     32        * bindings/js/JSCanvasRenderingContextCustom.cpp:
     33        (WebCore::JSCanvasRenderingContext::visitChildrenVirtual):
     34        (WebCore::JSCanvasRenderingContext::visitChildren):
     35        * bindings/js/JSDOMGlobalObject.cpp:
     36        (WebCore::JSDOMGlobalObject::visitChildrenVirtual):
     37        (WebCore::JSDOMGlobalObject::visitChildren):
     38        * bindings/js/JSDOMGlobalObject.h:
     39        * bindings/js/JSDOMWindowCustom.cpp:
     40        (WebCore::JSDOMWindow::visitChildrenVirtual):
     41        (WebCore::JSDOMWindow::visitChildren):
     42        * bindings/js/JSDOMWindowShell.cpp:
     43        (WebCore::JSDOMWindowShell::visitChildrenVirtual):
     44        (WebCore::JSDOMWindowShell::visitChildren):
     45        * bindings/js/JSDOMWindowShell.h:
     46        * bindings/js/JSJavaScriptAudioNodeCustom.cpp:
     47        (WebCore::JSJavaScriptAudioNode::visitChildrenVirtual):
     48        (WebCore::JSJavaScriptAudioNode::visitChildren):
     49        * bindings/js/JSMessageChannelCustom.cpp:
     50        (WebCore::JSMessageChannel::visitChildrenVirtual):
     51        (WebCore::JSMessageChannel::visitChildren):
     52        * bindings/js/JSMessagePortCustom.cpp:
     53        (WebCore::JSMessagePort::visitChildrenVirtual):
     54        (WebCore::JSMessagePort::visitChildren):
     55        * bindings/js/JSNamedNodeMapCustom.cpp:
     56        (WebCore::JSNamedNodeMap::visitChildrenVirtual):
     57        (WebCore::JSNamedNodeMap::visitChildren):
     58        * bindings/js/JSNodeCustom.cpp:
     59        (WebCore::JSNode::visitChildrenVirtual):
     60        (WebCore::JSNode::visitChildren):
     61        * bindings/js/JSNodeFilterCustom.cpp:
     62        (WebCore::JSNodeFilter::visitChildrenVirtual):
     63        (WebCore::JSNodeFilter::visitChildren):
     64        * bindings/js/JSNodeIteratorCustom.cpp:
     65        (WebCore::JSNodeIterator::visitChildrenVirtual):
     66        (WebCore::JSNodeIterator::visitChildren):
     67        * bindings/js/JSSVGElementInstanceCustom.cpp:
     68        (WebCore::JSSVGElementInstance::visitChildrenVirtual):
     69        (WebCore::JSSVGElementInstance::visitChildren):
     70        * bindings/js/JSSharedWorkerCustom.cpp:
     71        (WebCore::JSSharedWorker::visitChildrenVirtual):
     72        (WebCore::JSSharedWorker::visitChildren):
     73        * bindings/js/JSStyleSheetCustom.cpp:
     74        (WebCore::JSStyleSheet::visitChildrenVirtual):
     75        (WebCore::JSStyleSheet::visitChildren):
     76        * bindings/js/JSTreeWalkerCustom.cpp:
     77        (WebCore::JSTreeWalker::visitChildrenVirtual):
     78        (WebCore::JSTreeWalker::visitChildren):
     79        * bindings/js/JSWebGLRenderingContextCustom.cpp:
     80        (WebCore::JSWebGLRenderingContext::visitChildrenVirtual):
     81        (WebCore::JSWebGLRenderingContext::visitChildren):
     82        * bindings/js/JSWorkerContextCustom.cpp:
     83        (WebCore::JSWorkerContext::visitChildrenVirtual):
     84        (WebCore::JSWorkerContext::visitChildren):
     85        * bindings/js/JSXMLHttpRequestCustom.cpp:
     86        (WebCore::JSXMLHttpRequest::visitChildrenVirtual):
     87        (WebCore::JSXMLHttpRequest::visitChildren):
     88        * bindings/js/JSXPathResultCustom.cpp:
     89        (WebCore::JSXPathResult::visitChildrenVirtual):
     90        (WebCore::JSXPathResult::visitChildren):
     91        * bindings/scripts/CodeGeneratorJS.pm:
     92        (GenerateHeader):
     93        (GenerateImplementation):
     94        * bindings/scripts/test/JS/JSTestObj.cpp:
     95        (WebCore::JSTestObj::visitChildrenVirtual):
     96        (WebCore::JSTestObj::visitChildren):
     97        * bindings/scripts/test/JS/JSTestObj.h:
     98        * bridge/qt/qt_instance.cpp:
     99        (JSC::Bindings::QtRuntimeObject::visitChildrenVirtual):
     100        (JSC::Bindings::QtRuntimeObject::visitChildren):
     101        * bridge/qt/qt_runtime.cpp:
     102        (JSC::Bindings::QtRuntimeMetaMethod::visitChildrenVirtual):
     103        (JSC::Bindings::QtRuntimeMetaMethod::visitChildren):
     104        * bridge/qt/qt_runtime.h:
     105        * workers/WorkerContext.h:
     106
     107<<<<<<< .mine
     1082011-09-27  Mark Hahnenberg  <mhahnenberg@apple.com>
     109
     110        Add static version of JSCell::getCallData
     111        https://bugs.webkit.org/show_bug.cgi?id=68741
     112
     113        Reviewed by Darin Adler.
     114
     115        No new tests.
     116
     117        In this patch we just extract the bodies of the virtual getCallData methods
     118        throughout the JSCell inheritance hierarchy out into static methods, which are
     119        now called from the virtual methods.  This is an intermediate step in trying to
     120        move the virtual-ness of getCallData into our own method table stored in
     121        ClassInfo.  We need to convert the methods to static methods because static methods
     122        can be represented as function pointers rather than pointers to member functions, and
     123        function pointers are smaller and faster to call than pointers to member functions.
     124
     125        * WebCore.exp.in:
     126        * bindings/js/JSCallbackData.cpp:
     127        (WebCore::JSCallbackData::invokeCallback):
     128        * bindings/js/JSCustomXPathNSResolver.cpp:
     129        (WebCore::JSCustomXPathNSResolver::lookupNamespaceURI):
     130        * bindings/js/JSErrorHandler.cpp:
     131        (WebCore::JSErrorHandler::handleEvent):
     132        * bindings/js/JSEventListener.cpp:
     133        (WebCore::JSEventListener::handleEvent):
     134        * bindings/js/JSHTMLAllCollectionCustom.cpp:
     135        (WebCore::JSHTMLAllCollection::getCallDataVirtual):
     136        (WebCore::JSHTMLAllCollection::getCallData):
     137        * bindings/js/JSHTMLAppletElementCustom.cpp:
     138        (WebCore::JSHTMLAppletElement::getCallDataVirtual):
     139        (WebCore::JSHTMLAppletElement::getCallData):
     140        * bindings/js/JSHTMLEmbedElementCustom.cpp:
     141        (WebCore::JSHTMLEmbedElement::getCallDataVirtual):
     142        (WebCore::JSHTMLEmbedElement::getCallData):
     143        * bindings/js/JSHTMLObjectElementCustom.cpp:
     144        (WebCore::JSHTMLObjectElement::getCallDataVirtual):
     145        (WebCore::JSHTMLObjectElement::getCallData):
     146        * bindings/js/JSInjectedScriptHostCustom.cpp:
     147        (WebCore::JSInjectedScriptHost::evaluate):
     148        * bindings/js/JSPluginElementFunctions.cpp:
     149        (WebCore::runtimeObjectGetCallData):
     150        * bindings/scripts/CodeGeneratorJS.pm:
     151        (GenerateHeader):
     152        * bridge/objc/objc_runtime.h:
     153        * bridge/objc/objc_runtime.mm:
     154        (JSC::Bindings::ObjcFallbackObjectImp::getCallDataVirtual):
     155        (JSC::Bindings::ObjcFallbackObjectImp::getCallData):
     156        * bridge/qt/qt_runtime.cpp:
     157        (JSC::Bindings::QtRuntimeMetaMethod::getCallDataVirtual):
     158        (JSC::Bindings::QtRuntimeMetaMethod::getCallData):
     159        (JSC::Bindings::QtRuntimeConnectionMethod::call):
     160        (JSC::Bindings::QtRuntimeConnectionMethod::getCallDataVirtual):
     161        (JSC::Bindings::QtRuntimeConnectionMethod::getCallData):
     162        (JSC::Bindings::isJavaScriptFunction):
     163        * bridge/qt/qt_runtime.h:
     164        * bridge/runtime_method.cpp:
     165        (JSC::RuntimeMethod::getCallDataVirtual):
     166        (JSC::RuntimeMethod::getCallData):
     167        * bridge/runtime_method.h:
     168        * bridge/runtime_object.cpp:
     169        (JSC::Bindings::RuntimeObject::getCallDataVirtual):
     170        (JSC::Bindings::RuntimeObject::getCallData):
     171        * bridge/runtime_object.h:
     172
     173=======
    11742011-09-27  Dean Jackson  <dino@apple.com>
    2175
     
    6179        * WebCore.xcodeproj/project.pbxproj:
    7180
     181>>>>>>> .r96163
    81822011-09-27  David Hyatt  <hyatt@apple.com>
    9183
  • trunk/Source/WebCore/WebCore.exp.in

    r95967 r96164  
    16481648
    16491649#if USE(PLUGIN_HOST_PROCESS)
    1650 __ZN3JSC13RuntimeMethod11getCallDataERNS_8CallDataE
    16511650__ZN3JSC13RuntimeMethod14finishCreationERNS_12JSGlobalDataERKNS_10IdentifierE
     1651__ZN3JSC13RuntimeMethod18getCallDataVirtualERNS_8CallDataE
    16521652__ZN3JSC13RuntimeMethod18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
    16531653__ZN3JSC13RuntimeMethod24getOwnPropertyDescriptorEPNS_9ExecStateERKNS_10IdentifierERNS_18PropertyDescriptorE
     
    16551655__ZN3JSC13RuntimeMethodC2EPNS_14JSGlobalObjectEPNS_9StructureERN3WTF6VectorIPNS_8Bindings6MethodELm0EEE
    16561656__ZN3JSC8Bindings10RootObjectD1Ev
    1657 __ZN3JSC8Bindings13RuntimeObject11getCallDataERNS_8CallDataE
    16581657__ZN3JSC8Bindings13RuntimeObject14deletePropertyEPNS_9ExecStateERKNS_10IdentifierE
    16591658__ZN3JSC8Bindings13RuntimeObject14finishCreationEPNS_14JSGlobalObjectE
    16601659__ZN3JSC8Bindings13RuntimeObject16getConstructDataERNS_13ConstructDataE
     1660__ZN3JSC8Bindings13RuntimeObject18getCallDataVirtualERNS_8CallDataE
    16611661__ZN3JSC8Bindings13RuntimeObject18getOwnPropertySlotEPNS_9ExecStateERKNS_10IdentifierERNS_12PropertySlotE
    16621662__ZN3JSC8Bindings13RuntimeObject19getOwnPropertyNamesEPNS_9ExecStateERNS_17PropertyNameArrayENS_15EnumerationModeE
  • trunk/Source/WebCore/bindings/js/JSCallbackData.cpp

    r71455 r96164  
    5454    CallType callType = getCallData(function, callData);
    5555    if (callType == CallTypeNone) {
    56         callType = callback()->getCallData(callData);
     56        callType = callback()->getCallDataVirtual(callData);
    5757        if (callType == CallTypeNone)
    5858            return JSValue();
  • trunk/Source/WebCore/bindings/js/JSCustomXPathNSResolver.cpp

    r90124 r96164  
    7878    CallType callType = getCallData(function, callData);
    7979    if (callType == CallTypeNone) {
    80         callType = m_customResolver->getCallData(callData);
     80        callType = m_customResolver->getCallDataVirtual(callData);
    8181        if (callType == CallTypeNone) {
    8282            // FIXME: Pass actual line number and source URL.
  • trunk/Source/WebCore/bindings/js/JSErrorHandler.cpp

    r95901 r96164  
    7575
    7676    CallData callData;
    77     CallType callType = jsFunction->getCallData(callData);
     77    CallType callType = jsFunction->getCallDataVirtual(callData);
    7878
    7979    if (callType != CallTypeNone) {
  • trunk/Source/WebCore/bindings/js/JSEventListener.cpp

    r94918 r96164  
    102102    if (callType == CallTypeNone) {
    103103        handleEventFunction = JSValue();
    104         callType = jsFunction->getCallData(callData);
     104        callType = jsFunction->getCallDataVirtual(callData);
    105105    }
    106106
  • trunk/Source/WebCore/bindings/js/JSHTMLAllCollectionCustom.cpp

    r95901 r96164  
    100100}
    101101
    102 CallType JSHTMLAllCollection::getCallData(CallData& callData)
     102CallType JSHTMLAllCollection::getCallDataVirtual(CallData& callData)
     103{
     104    return getCallData(this, callData);
     105}
     106
     107CallType JSHTMLAllCollection::getCallData(JSCell*, CallData& callData)
    103108{
    104109    callData.native.function = callHTMLAllCollection;
  • trunk/Source/WebCore/bindings/js/JSHTMLAppletElementCustom.cpp

    r64093 r96164  
    4949}
    5050
    51 CallType JSHTMLAppletElement::getCallData(CallData& callData)
     51CallType JSHTMLAppletElement::getCallDataVirtual(CallData& callData)
    5252{
    53     return runtimeObjectGetCallData(this, callData);
     53    return getCallData(this, callData);
     54}
     55
     56CallType JSHTMLAppletElement::getCallData(JSCell* cell, CallData& callData)
     57{
     58    return runtimeObjectGetCallData(static_cast<JSHTMLAppletElement*>(cell), callData);
    5459}
    5560
  • trunk/Source/WebCore/bindings/js/JSHTMLEmbedElementCustom.cpp

    r64093 r96164  
    4949}
    5050
    51 CallType JSHTMLEmbedElement::getCallData(CallData& callData)
     51CallType JSHTMLEmbedElement::getCallDataVirtual(CallData& callData)
    5252{
    53     return runtimeObjectGetCallData(this, callData);
     53    return getCallData(this, callData);
     54}
     55
     56CallType JSHTMLEmbedElement::getCallData(JSCell* cell, CallData& callData)
     57{
     58    return runtimeObjectGetCallData(static_cast<JSHTMLEmbedElement*>(cell), callData);
    5459}
    5560
  • trunk/Source/WebCore/bindings/js/JSHTMLObjectElementCustom.cpp

    r64093 r96164  
    4949}
    5050
    51 CallType JSHTMLObjectElement::getCallData(CallData& callData)
     51CallType JSHTMLObjectElement::getCallDataVirtual(CallData& callData)
    5252{
    53     return runtimeObjectGetCallData(this, callData);
     53    return getCallData(this, callData);
     54}
     55
     56CallType JSHTMLObjectElement::getCallData(JSCell* cell, CallData& callData)
     57{
     58    return runtimeObjectGetCallData(static_cast<JSHTMLObjectElement*>(cell), callData);
    5459}
    5560
  • trunk/Source/WebCore/bindings/js/JSInjectedScriptHostCustom.cpp

    r95901 r96164  
    8686    JSFunction* evalFunction = globalObject->evalFunction();
    8787    CallData callData;
    88     CallType callType = evalFunction->getCallData(callData);
     88    CallType callType = evalFunction->getCallDataVirtual(callData);
    8989    if (callType == CallTypeNone)
    9090        return jsUndefined();
  • trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp

    r79988 r96164  
    178178        CallData scriptObjectCallData;
    179179       
    180         if (scriptObject->getCallData(scriptObjectCallData) == CallTypeNone)
     180        if (scriptObject->getCallDataVirtual(scriptObjectCallData) == CallTypeNone)
    181181            return CallTypeNone;
    182182
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm

    r95936 r96164  
    817817
    818818    # Custom call functions
    819     push(@headerContent, "    virtual JSC::CallType getCallData(JSC::CallData&);\n\n") if $dataNode->extendedAttributes->{"CustomCall"};
     819    push(@headerContent, "    virtual JSC::CallType getCallDataVirtual(JSC::CallData&);\n\n") if $dataNode->extendedAttributes->{"CustomCall"};
     820    push(@headerContent, "    static JSC::CallType getCallData(JSC::JSCell*, JSC::CallData&);\n\n") if $dataNode->extendedAttributes->{"CustomCall"};
    820821
    821822    # Custom deleteProperty function
  • trunk/Source/WebCore/bridge/objc/objc_runtime.h

    r94929 r96164  
    127127    virtual bool getOwnPropertyDescriptor(ExecState*, const Identifier&, PropertyDescriptor&);
    128128    virtual void put(ExecState*, const Identifier& propertyName, JSValue, PutPropertySlot&);
    129     virtual CallType getCallData(CallData&);
     129    virtual CallType getCallDataVirtual(CallData&);
     130    static CallType getCallData(JSCell*, CallData&);
    130131    virtual bool deleteProperty(ExecState*, const Identifier& propertyName);
    131132    virtual JSValue defaultValue(ExecState*, PreferredPrimitiveType) const;
  • trunk/Source/WebCore/bridge/objc/objc_runtime.mm

    r95936 r96164  
    256256}
    257257
    258 CallType ObjcFallbackObjectImp::getCallData(CallData& callData)
    259 {
    260     id targetObject = _instance->getObject();
     258CallType ObjcFallbackObjectImp::getCallDataVirtual(CallData& callData)
     259{
     260    return getCallData(this, callData);
     261}
     262
     263CallType ObjcFallbackObjectImp::getCallData(JSCell* cell, CallData& callData)
     264{
     265    ObjcFallbackObjectImp* thisObject = static_cast<ObjcFallbackObjectImp*>(cell);
     266    id targetObject = thisObject->_instance->getObject();
    261267    if (![targetObject respondsToSelector:@selector(invokeUndefinedMethodFromWebScript:withArguments:)])
    262268        return CallTypeNone;
  • trunk/Source/WebCore/bridge/qt/qt_runtime.cpp

    r95936 r96164  
    14921492}
    14931493
    1494 CallType QtRuntimeMetaMethod::getCallData(CallData& callData)
     1494CallType QtRuntimeMetaMethod::getCallDataVirtual(CallData& callData)
     1495{
     1496    return getCallData(this, callData);
     1497}
     1498
     1499CallType QtRuntimeMetaMethod::getCallData(JSCell*, CallData& callData)
    14951500{
    14961501    callData.native.function = call;
     
    16211626                funcObject = exec->argument(0).toObject(exec);
    16221627                CallData callData;
    1623                 if (funcObject->getCallData(callData) == CallTypeNone) {
     1628                if (funcObject->getCallDataVirtual(callData) == CallTypeNone) {
    16241629                    if (d->m_isConnect)
    16251630                        return throwVMError(exec, createTypeError(exec, "QtMetaMethod.connect: target is not a function"));
     
    16341639                    JSObject *asObj = exec->argument(1).toObject(exec);
    16351640                    CallData callData;
    1636                     if (asObj->getCallData(callData) != CallTypeNone) {
     1641                    if (asObj->getCallDataVirtual(callData) != CallTypeNone) {
    16371642                        // Function version
    16381643                        funcObject = asObj;
     
    16471652                        JSObject* asFuncObj = val.toObject(exec);
    16481653
    1649                         if (asFuncObj->getCallData(callData) != CallTypeNone) {
     1654                        if (asFuncObj->getCallDataVirtual(callData) != CallTypeNone) {
    16501655                            funcObject = asFuncObj;
    16511656                        } else {
     
    17311736}
    17321737
    1733 CallType QtRuntimeConnectionMethod::getCallData(CallData& callData)
     1738CallType QtRuntimeConnectionMethod::getCallDataVirtual(CallData& callData)
     1739{
     1740    return getCallData(this, callData);
     1741}
     1742
     1743CallType QtRuntimeConnectionMethod::getCallData(JSCell*, CallData& callData)
    17341744{
    17351745    callData.native.function = call;
     
    18541864{
    18551865    CallData callData;
    1856     return toJS(object)->getCallData(callData) == CallTypeJS;
     1866    return toJS(object)->getCallDataVirtual(callData) == CallTypeJS;
    18571867}
    18581868
  • trunk/Source/WebCore/bridge/qt/qt_runtime.h

    r95849 r96164  
    179179    void finishCreation(ExecState*, const Identifier&, PassRefPtr<QtInstance>, int index, const QByteArray& signature, bool allowPrivate);
    180180
    181     virtual CallType getCallData(CallData&);
     181    virtual CallType getCallDataVirtual(CallData&);
     182    static CallType getCallData(JSCell*, CallData&);
    182183    static EncodedJSValue JSC_HOST_CALL call(ExecState* exec);
    183184    static JSValue lengthGetter(ExecState*, JSValue, const Identifier&);
     
    210211    void finishCreation(ExecState*, const Identifier&, bool isConnect, PassRefPtr<QtInstance>, int index, const QByteArray& signature);
    211212
    212     virtual CallType getCallData(CallData&);
     213    virtual CallType getCallDataVirtual(CallData&);
     214    static CallType getCallData(JSCell*, CallData&);
    213215    static EncodedJSValue JSC_HOST_CALL call(ExecState* exec);
    214216    static JSValue lengthGetter(ExecState*, JSValue, const Identifier&);
  • trunk/Source/WebCore/bridge/runtime_method.cpp

    r95936 r96164  
    124124}
    125125
    126 CallType RuntimeMethod::getCallData(CallData& callData)
     126CallType RuntimeMethod::getCallDataVirtual(CallData& callData)
     127{
     128    return getCallData(this, callData);
     129}
     130
     131CallType RuntimeMethod::getCallData(JSCell*, CallData& callData)
    127132{
    128133    callData.native.function = callRuntimeMethod;
  • trunk/Source/WebCore/bridge/runtime_method.h

    r95108 r96164  
    6868    virtual bool getOwnPropertySlot(ExecState*, const Identifier&, PropertySlot&);
    6969    virtual bool getOwnPropertyDescriptor(ExecState*, const Identifier&, PropertyDescriptor&);
    70     virtual CallType getCallData(CallData&);
     70    virtual CallType getCallDataVirtual(CallData&);
     71    static CallType getCallData(JSCell*, CallData&);
    7172
    7273    OwnPtr<Bindings::MethodList> _methodList;
  • trunk/Source/WebCore/bridge/runtime_object.cpp

    r95936 r96164  
    260260}
    261261
    262 CallType RuntimeObject::getCallData(CallData& callData)
    263 {
    264     if (!m_instance)
     262CallType RuntimeObject::getCallDataVirtual(CallData& callData)
     263{
     264    return getCallData(this, callData);
     265}
     266
     267CallType RuntimeObject::getCallData(JSCell* cell, CallData& callData)
     268{
     269    RuntimeObject* thisObject = static_cast<RuntimeObject*>(cell);
     270    if (!thisObject->m_instance)
    265271        return CallTypeNone;
    266272   
    267     RefPtr<Instance> instance = m_instance;
     273    RefPtr<Instance> instance = thisObject->m_instance;
    268274    if (!instance->supportsInvokeDefaultMethod())
    269275        return CallTypeNone;
  • trunk/Source/WebCore/bridge/runtime_object.h

    r94929 r96164  
    5151    virtual bool deleteProperty(ExecState*, const Identifier& propertyName);
    5252    virtual JSValue defaultValue(ExecState*, PreferredPrimitiveType) const;
    53     virtual CallType getCallData(CallData&);
     53    virtual CallType getCallDataVirtual(CallData&);
     54    static CallType getCallData(JSCell*, CallData&);
    5455    virtual ConstructType getConstructData(ConstructData&);
    5556
  • trunk/Source/WebKit/mac/ChangeLog

    r95967 r96164  
     12011-09-27  Mark Hahnenberg  <mhahnenberg@apple.com>
     2
     3        Add static version of JSCell::getCallData
     4        https://bugs.webkit.org/show_bug.cgi?id=68741
     5
     6        Reviewed by Darin Adler.
     7
     8        In this patch we just extract the bodies of the virtual getCallData methods
     9        throughout the JSCell inheritance hierarchy out into static methods, which are
     10        now called from the virtual methods.  This is an intermediate step in trying to
     11        move the virtual-ness of getCallData into our own method table stored in
     12        ClassInfo.  We need to convert the methods to static methods because static methods
     13        can be represented as function pointers rather than pointers to member functions, and
     14        function pointers are smaller and faster to call than pointers to member functions.
     15
     16        * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
     17        (WebKit::NetscapePluginInstanceProxy::invokeDefault):
     18
    1192011-09-23  Simon Fraser  <simon.fraser@apple.com>
    220
  • trunk/Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm

    r95901 r96164  
    944944    JSLock lock(SilenceAssertionsOnly);   
    945945    CallData callData;
    946     CallType callType = object->getCallData(callData);
     946    CallType callType = object->getCallDataVirtual(callData);
    947947    if (callType == CallTypeNone)
    948948        return false;
  • trunk/Source/WebKit2/ChangeLog

    r96145 r96164  
     12011-09-27  Mark Hahnenberg  <mhahnenberg@apple.com>
     2
     3        Add static version of JSCell::getCallData
     4        https://bugs.webkit.org/show_bug.cgi?id=68741
     5
     6        Reviewed by Darin Adler.
     7
     8        In this patch we just extract the bodies of the virtual getCallData methods
     9        throughout the JSCell inheritance hierarchy out into static methods, which are
     10        now called from the virtual methods.  This is an intermediate step in trying to
     11        move the virtual-ness of getCallData into our own method table stored in
     12        ClassInfo.  We need to convert the methods to static methods because static methods
     13        can be represented as function pointers rather than pointers to member functions, and
     14        function pointers are smaller and faster to call than pointers to member functions.
     15
     16        * WebProcess/Plugins/Netscape/JSNPMethod.cpp:
     17        (WebKit::JSNPMethod::getCallDataVirtual):
     18        (WebKit::JSNPMethod::getCallData):
     19        * WebProcess/Plugins/Netscape/JSNPMethod.h:
     20        * WebProcess/Plugins/Netscape/JSNPObject.cpp:
     21        (WebKit::JSNPObject::getCallDataVirtual):
     22        (WebKit::JSNPObject::getCallData):
     23        * WebProcess/Plugins/Netscape/JSNPObject.h:
     24
    1252011-09-27  Gopal Raghavan  <gopal.1.raghavan@nokia.com>
    226
  • trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPMethod.cpp

    r95936 r96164  
    7878}
    7979
    80 CallType JSNPMethod::getCallData(CallData& callData)
     80CallType JSNPMethod::getCallDataVirtual(CallData& callData)
     81{
     82    return getCallData(this, callData);
     83}
     84
     85CallType JSNPMethod::getCallData(JSCell*, CallData& callData)
    8186{
    8287    callData.native.function = callMethod;
  • trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPMethod.h

    r95901 r96164  
    6363    }
    6464
    65     virtual JSC::CallType getCallData(JSC::CallData&);
     65    virtual JSC::CallType getCallDataVirtual(JSC::CallData&);
     66    static JSC::CallType getCallData(JSC::JSCell*, JSC::CallData&);
    6667   
    6768    NPIdentifier m_npIdentifier;
  • trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp

    r95936 r96164  
    218218}
    219219
    220 JSC::CallType JSNPObject::getCallData(JSC::CallData& callData)
    221 {
    222     ASSERT_GC_OBJECT_INHERITS(this, &s_info);
    223     if (!m_npObject || !m_npObject->_class->invokeDefault)
     220CallType JSNPObject::getCallDataVirtual(CallData& callData)
     221{
     222    return getCallData(this, callData);
     223}
     224
     225JSC::CallType JSNPObject::getCallData(JSC::JSCell* cell, JSC::CallData& callData)
     226{
     227    JSNPObject* thisObject = static_cast<JSNPObject*>(cell);
     228    ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info);
     229    if (!thisObject->m_npObject || !thisObject->m_npObject->_class->invokeDefault)
    224230        return CallTypeNone;
    225231
  • trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.h

    r95901 r96164  
    8080    }
    8181
    82     virtual JSC::CallType getCallData(JSC::CallData&);
     82    virtual JSC::CallType getCallDataVirtual(JSC::CallData&);
     83    static JSC::CallType getCallData(JSC::JSCell*, JSC::CallData&);
    8384    virtual JSC::ConstructType getConstructData(JSC::ConstructData&);
    8485
Note: See TracChangeset for help on using the changeset viewer.